From 92cfa3dfa638b193bf9d754dc24016f9ddb74d0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Mon, 26 Jun 2017 17:40:58 +0200 Subject: [PATCH] macOS: Remove workaround for crash when closing window from title bar The platform window is now protected by a QPointer, so we don't need to juggle the NSWindow retain count. Task-number: QTBUG-37287 Change-Id: Id55ea311f0793370e248aa58cc8e383b574fbb40 Reviewed-by: Timur Pocheptsov --- src/plugins/platforms/cocoa/qnswindow.h | 1 - src/plugins/platforms/cocoa/qnswindow.mm | 14 -------------- 2 files changed, 15 deletions(-) diff --git a/src/plugins/platforms/cocoa/qnswindow.h b/src/plugins/platforms/cocoa/qnswindow.h index 62e2d93c603..b13b6d42a9e 100644 --- a/src/plugins/platforms/cocoa/qnswindow.h +++ b/src/plugins/platforms/cocoa/qnswindow.h @@ -83,7 +83,6 @@ typedef NSWindow QCocoaNSWindow; - (id)initWithNSWindow:(QCocoaNSWindow *)window platformWindow:(QCocoaWindow *)platformWindow; - (void)handleWindowEvent:(NSEvent *)theEvent; -- (void)clearWindow; - (void)detachFromPlatformWindow; @end diff --git a/src/plugins/platforms/cocoa/qnswindow.mm b/src/plugins/platforms/cocoa/qnswindow.mm index 3bb2c2eb3d1..96c03147697 100644 --- a/src/plugins/platforms/cocoa/qnswindow.mm +++ b/src/plugins/platforms/cocoa/qnswindow.mm @@ -114,14 +114,7 @@ static bool isMouseEvent(NSEvent *ev) - (void)handleWindowEvent:(NSEvent *)theEvent { - // The call to -[NSWindow sendEvent] may result in the window being deleted - // (e.g., when closing the window by pressing the title bar close button). - [self retain]; [self.window superSendEvent:theEvent]; - bool windowStillAlive = self.window != nil; // We need to read before releasing - [self release]; - if (!windowStillAlive) - return; if (!self.platformWindow) return; // Platform window went away while processing event @@ -143,11 +136,6 @@ static bool isMouseEvent(NSEvent *ev) self.window.delegate = nil; } -- (void)clearWindow -{ - _window = nil; -} - - (void)dealloc { _window = nil; @@ -226,7 +214,6 @@ static const bool kNoDefer = NO; - (void)dealloc { - [_helper clearWindow]; [_helper release]; _helper = nil; [super dealloc]; @@ -364,7 +351,6 @@ static const bool kNoDefer = NO; - (void)dealloc { - [_helper clearWindow]; [_helper release]; _helper = nil; [super dealloc];