mirror of
https://github.com/fltk/fltk.git
synced 2026-05-27 10:57:58 +08:00
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:
+9
-2
@@ -656,6 +656,13 @@ void Fl_Cocoa_Screen_Driver::remove_timeout(Fl_Timeout_Handler cb, void* data)
|
|||||||
@end
|
@end
|
||||||
|
|
||||||
@implementation FLWindow
|
@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
|
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
|
||||||
- (NSPoint)convertBaseToScreen:(NSPoint)aPoint
|
- (NSPoint)convertBaseToScreen:(NSPoint)aPoint
|
||||||
{
|
{
|
||||||
@@ -1317,9 +1324,9 @@ static FLWindowDelegate *flwindowdelegate_instance = nil;
|
|||||||
- (void)windowDidResize:(NSNotification *)notif
|
- (void)windowDidResize:(NSNotification *)notif
|
||||||
{
|
{
|
||||||
FLWindow *nsw = (FLWindow*)[notif object];
|
FLWindow *nsw = (FLWindow*)[notif object];
|
||||||
if (![nsw isVisible]) return;
|
|
||||||
fl_lock_function();
|
|
||||||
Fl_Window *window = [nsw getFl_Window];
|
Fl_Window *window = [nsw getFl_Window];
|
||||||
|
if (!window) return;
|
||||||
|
fl_lock_function();
|
||||||
NSRect r; NSPoint pt2;
|
NSRect r; NSPoint pt2;
|
||||||
r = [[nsw contentView] frame];
|
r = [[nsw contentView] frame];
|
||||||
pt2 = [nsw convertBaseToScreen:NSMakePoint(0, r.size.height)];
|
pt2 = [nsw convertBaseToScreen:NSMakePoint(0, r.size.height)];
|
||||||
|
|||||||
Reference in New Issue
Block a user