Title: [87113] trunk/Source/WebKit2
- Revision
- 87113
- Author
- jer.no...@apple.com
- Date
- 2011-05-23 18:02:37 -0700 (Mon, 23 May 2011)
Log Message
2011-05-23 Jeremy Noble <jer.no...@apple.com>
Reviewed by Darin Adler.
REGRESSION (r86990:86992): World leak when all windows closed
https://bugs.webkit.org/show_bug.cgi?id=61311
Three interlocking problems:
1) Calling [WKView fullScreenController] will create the controller if it doesn't all ready
exist, so move the closing code into WKView, where we can bail early if there isn't a
controller.
2) A retain-cycle exists between WKView and WKFullScreenWindowController. Make sure to break
the cycle explicitly by clearing the _fullScreenWindowController ivar when closing the
controller.
3) [NSWindowController close] was overridden without calling [super close]. Do that.
* UIProcess/API/mac/WKView.mm:
(-[WKView closeFullScreenWindowController]): Moved here from WebFullScreenManagerProxyMac.mm.
* UIProcess/API/mac/WKViewInternal.h:
* UIProcess/mac/WKFullScreenWindowController.mm:
(-[WKFullScreenWindowController close]): Call [super close].
* UIProcess/mac/WebFullScreenManagerProxyMac.mm:
(WebKit::WebFullScreenManagerProxy::invalidate):
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (87112 => 87113)
--- trunk/Source/WebKit2/ChangeLog 2011-05-24 00:54:07 UTC (rev 87112)
+++ trunk/Source/WebKit2/ChangeLog 2011-05-24 01:02:37 UTC (rev 87113)
@@ -1,3 +1,30 @@
+2011-05-23 Jeremy Noble <jer.no...@apple.com>
+
+ Reviewed by Darin Adler.
+
+ REGRESSION (r86990:86992): World leak when all windows closed
+ https://bugs.webkit.org/show_bug.cgi?id=61311
+
+ Three interlocking problems:
+
+ 1) Calling [WKView fullScreenController] will create the controller if it doesn't all ready
+ exist, so move the closing code into WKView, where we can bail early if there isn't a
+ controller.
+
+ 2) A retain-cycle exists between WKView and WKFullScreenWindowController. Make sure to break
+ the cycle explicitly by clearing the _fullScreenWindowController ivar when closing the
+ controller.
+
+ 3) [NSWindowController close] was overridden without calling [super close]. Do that.
+
+ * UIProcess/API/mac/WKView.mm:
+ (-[WKView closeFullScreenWindowController]): Moved here from WebFullScreenManagerProxyMac.mm.
+ * UIProcess/API/mac/WKViewInternal.h:
+ * UIProcess/mac/WKFullScreenWindowController.mm:
+ (-[WKFullScreenWindowController close]): Call [super close].
+ * UIProcess/mac/WebFullScreenManagerProxyMac.mm:
+ (WebKit::WebFullScreenManagerProxy::invalidate):
+
2011-05-20 Jer Noble <jer.no...@apple.com>
Reviewed by Darin Adler.
Modified: trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm (87112 => 87113)
--- trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm 2011-05-24 00:54:07 UTC (rev 87112)
+++ trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm 2011-05-24 01:02:37 UTC (rev 87113)
@@ -2423,6 +2423,14 @@
}
return _data->_fullScreenWindowController.get();
}
+
+- (void)closeFullScreenWindowController
+{
+ if (!_data->_fullScreenWindowController)
+ return;
+ [_data->_fullScreenWindowController.get() close];
+ _data->_fullScreenWindowController = nullptr;
+}
#endif
- (bool)_executeSavedCommandBySelector:(SEL)selector
Modified: trunk/Source/WebKit2/UIProcess/API/mac/WKViewInternal.h (87112 => 87113)
--- trunk/Source/WebKit2/UIProcess/API/mac/WKViewInternal.h 2011-05-24 00:54:07 UTC (rev 87112)
+++ trunk/Source/WebKit2/UIProcess/API/mac/WKViewInternal.h 2011-05-24 01:02:37 UTC (rev 87113)
@@ -84,6 +84,7 @@
#if ENABLE(FULLSCREEN_API)
- (WKFullScreenWindowController*)fullScreenWindowController;
+- (void)closeFullScreenWindowController;
#endif
- (void)_cacheWindowBottomCornerRect;
Modified: trunk/Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm (87112 => 87113)
--- trunk/Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm 2011-05-24 00:54:07 UTC (rev 87112)
+++ trunk/Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm 2011-05-24 01:02:37 UTC (rev 87113)
@@ -435,6 +435,8 @@
if (_isExitingFullScreen)
[self finishedExitFullScreenAnimation:YES];
+
+ [super close];
}
#pragma mark -
Modified: trunk/Source/WebKit2/UIProcess/mac/WebFullScreenManagerProxyMac.mm (87112 => 87113)
--- trunk/Source/WebKit2/UIProcess/mac/WebFullScreenManagerProxyMac.mm 2011-05-24 00:54:07 UTC (rev 87112)
+++ trunk/Source/WebKit2/UIProcess/mac/WebFullScreenManagerProxyMac.mm 2011-05-24 01:02:37 UTC (rev 87113)
@@ -40,7 +40,7 @@
if (!m_webView)
return;
- [[m_webView fullScreenWindowController] close];
+ [m_webView closeFullScreenWindowController];
m_webView = 0;
}
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes