From 6383d4f1ea225e4e47dad7465a60ea1c95b1ebee Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 10 Dec 2019 12:05:49 -0300 Subject: [PATCH] [OSX] catch exceptions when window closed and tries to lockFocusIfCanDraw. --- native/Avalonia.Native/src/OSX/gl.mm | 11 ++++++++++- native/Avalonia.Native/src/OSX/window.mm | 9 ++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/native/Avalonia.Native/src/OSX/gl.mm b/native/Avalonia.Native/src/OSX/gl.mm index ba5183dfa1..feb0643654 100644 --- a/native/Avalonia.Native/src/OSX/gl.mm +++ b/native/Avalonia.Native/src/OSX/gl.mm @@ -233,8 +233,17 @@ public: auto f = GetFeature(); if(f == NULL) return E_FAIL; - if(![_view lockFocusIfCanDraw]) + + @try + { + if(![_view lockFocusIfCanDraw]) + return E_ABORT; + } + @catch(NSException* exception) + { return E_ABORT; + } + auto gl = _context; CGLLockContext([_context CGLContextObj]); diff --git a/native/Avalonia.Native/src/OSX/window.mm b/native/Avalonia.Native/src/OSX/window.mm index a73ab0a9a9..a40a181ba7 100644 --- a/native/Avalonia.Native/src/OSX/window.mm +++ b/native/Avalonia.Native/src/OSX/window.mm @@ -291,7 +291,14 @@ public: { @autoreleasepool { - return [View lockFocusIfCanDraw] == YES; + @try + { + return [View lockFocusIfCanDraw] == YES; + } + @catch (NSException*) + { + return NO; + } } }