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
This commit is contained in:
Manolo Gouy 2016-11-06 18:20:58 +00:00
parent 49a2e4206e
commit 214b3c32b5

View File

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