Move Vulkan context/rendering_device destruction to windowWillClose notification.

This commit is contained in:
bruvzg 2019-10-14 13:07:59 +03:00
parent 561b431d85
commit a85923b972

View File

@ -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);