MayaFlux 0.4.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ cleanup()

void MayaFlux::Core::WindowRenderContext::cleanup ( VKContext context)

Definition at line 55 of file BackendWindowHandler.cpp.

56{
57 vk::Device device = context.get_device();
58
59 if (capture) {
60 capture->readback_running.store(false, std::memory_order_release);
61 device.waitIdle();
62
63 if (capture->readback_thread.joinable())
64 capture->readback_thread.join();
65
66 for (auto& slot : capture->slots) {
67 if (slot->fence) {
68 (void)device.waitForFences(1, &slot->fence, VK_TRUE, UINT64_MAX);
69 device.destroyFence(slot->fence);
70 }
71 if (slot->image)
72 device.destroyImage(slot->image);
73 if (slot->mem)
74 device.freeMemory(slot->mem);
75 }
76 capture.reset();
77 }
78
79 device.waitIdle();
80
81 for (auto& img : image_available) {
82 if (img) {
83 device.destroySemaphore(img);
84 }
85 }
86 image_available.clear();
87
88 for (auto& render : render_finished) {
89 if (render) {
90 device.destroySemaphore(render);
91 }
92 }
93 render_finished.clear();
94
96
97 for (auto& fence : in_flight) {
98 if (fence) {
99 device.destroyFence(fence);
100 }
101 }
102 in_flight.clear();
103
104 if (depth_image && depth_image->is_initialized()) {
105 const auto& res = depth_image->get_image_resources();
106 if (res.image_view) {
107 device.destroyImageView(res.image_view);
108 }
109 if (res.memory) {
110 device.freeMemory(res.memory);
111 }
112 if (res.image) {
113 device.destroyImage(res.image);
114 }
115 depth_image.reset();
116 }
117
118 if (swapchain) {
119 swapchain->cleanup();
120 swapchain.reset();
121 }
122
123 if (surface) {
124 context.destroy_surface(surface);
125 surface = nullptr;
126 }
127
128 window->set_graphics_registered(false);
129}
vk::Fence fence
std::vector< vk::Semaphore > image_available
std::unique_ptr< CaptureState > capture
std::unique_ptr< VKSwapchain > swapchain
std::vector< vk::Semaphore > render_finished
std::vector< vk::CommandBuffer > clear_command_buffers

References capture, clear_command_buffers, depth_image, MayaFlux::Core::VKContext::destroy_surface(), fence, MayaFlux::Core::VKContext::get_device(), image_available, in_flight, render_finished, surface, swapchain, and window.

+ Here is the call graph for this function: