From 214b3c32b5a2e13674df69ce362eb6c13c3603ac Mon Sep 17 00:00:00 2001 From: Manolo Gouy Date: Sun, 6 Nov 2016 18:20:58 +0000 Subject: MacOS: another way to make sure windowDidResize does not access Fl_Window after [FLWindow close] message was sent git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@12082 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- src/Fl_cocoa.mm | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/Fl_cocoa.mm b/src/Fl_cocoa.mm index d12103126..1a47a3aba 100644 --- a/src/Fl_cocoa.mm +++ b/src/Fl_cocoa.mm @@ -656,6 +656,13 @@ void Fl_Cocoa_Screen_Driver::remove_timeout(Fl_Timeout_Handler cb, void* data) @end @implementation FLWindow +- (void)close +{ + [super close]; + // when a fullscreen window is closed, windowDidResize may be sent after the close message was sent + // and before the FLWindow receives the final dealloc message + w = NULL; +} #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 - (NSPoint)convertBaseToScreen:(NSPoint)aPoint { @@ -1317,9 +1324,9 @@ static FLWindowDelegate *flwindowdelegate_instance = nil; - (void)windowDidResize:(NSNotification *)notif { FLWindow *nsw = (FLWindow*)[notif object]; - if (![nsw isVisible]) return; - fl_lock_function(); Fl_Window *window = [nsw getFl_Window]; + if (!window) return; + fl_lock_function(); NSRect r; NSPoint pt2; r = [[nsw contentView] frame]; pt2 = [nsw convertBaseToScreen:NSMakePoint(0, r.size.height)]; -- cgit v1.2.3