diff options
author | bruvzg <7645683+bruvzg@users.noreply.github.com> | 2019-10-14 13:07:59 +0300 |
---|---|---|
committer | bruvzg <7645683+bruvzg@users.noreply.github.com> | 2020-02-11 12:04:16 +0100 |
commit | a85923b972c442b737d7c48f0349b8a4187811e8 (patch) | |
tree | 1c92c19170a07c29c95e2f1d479bf76a68275ddc /platform | |
parent | 561b431d85314000fe70d42e39713e5da394c3b5 (diff) |
Move Vulkan context/rendering_device destruction to windowWillClose notification.
Diffstat (limited to 'platform')
-rw-r--r-- | platform/osx/os_osx.mm | 33 |
1 files changed, 20 insertions, 13 deletions
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); |