From a85923b972c442b737d7c48f0349b8a4187811e8 Mon Sep 17 00:00:00 2001 From: bruvzg <7645683+bruvzg@users.noreply.github.com> Date: Mon, 14 Oct 2019 13:07:59 +0300 Subject: Move Vulkan context/rendering_device destruction to windowWillClose notification. --- platform/osx/os_osx.mm | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) (limited to 'platform') diff --git a/platform/osx/os_osx.mm b/platform/osx/os_osx.mm index 5d2bc5172f..4d2103cbb4 100644 --- a/platform/osx/os_osx.mm +++ b/platform/osx/os_osx.mm @@ -282,6 +282,8 @@ static NSCursor *cursorFromSelector(SEL selector, SEL fallback = nil) { //_Godotwindow* window; } +- (void)windowWillClose:(NSNotification *)notification; + @end @implementation GodotWindowDelegate @@ -294,6 +296,24 @@ static NSCursor *cursorFromSelector(SEL selector, SEL fallback = nil) { return NO; } +- (void)windowWillClose:(NSNotification *)notification { +#if defined(VULKAN_ENABLED) + if (OS_OSX::singleton->video_driver_index == OS::VIDEO_DRIVER_VULKAN) { + + if (OS_OSX::singleton->rendering_device_vulkan) { + OS_OSX::singleton->rendering_device_vulkan->finalize(); + memdelete(OS_OSX::singleton->rendering_device_vulkan); + OS_OSX::singleton->rendering_device_vulkan = NULL; + } + + if (OS_OSX::singleton->context_vulkan) { + memdelete(OS_OSX::singleton->context_vulkan); + OS_OSX::singleton->context_vulkan = NULL; + } + } +#endif +} + - (void)windowDidEnterFullScreen:(NSNotification *)notification { OS_OSX::singleton->zoomed = true; @@ -1626,19 +1646,6 @@ void OS_OSX::finalize() { memdelete(context_gles2); } #endif -#if defined(VULKAN_ENABLED) - if (video_driver_index == VIDEO_DRIVER_VULKAN) { - - if (rendering_device_vulkan) { - rendering_device_vulkan->finalize(); - memdelete(rendering_device_vulkan); - } - - if (context_vulkan) - memdelete(context_vulkan); - - } -#endif CFNotificationCenterRemoveObserver(CFNotificationCenterGetDistributedCenter(), NULL, kTISNotifySelectedKeyboardInputSourceChanged, NULL); CGDisplayRemoveReconfigurationCallback(displays_arrangement_changed, NULL); -- cgit v1.2.3