Title: [91994] trunk/Source/WebKit2
Revision
91994
Author
[email protected]
Date
2011-07-29 08:28:55 -0700 (Fri, 29 Jul 2011)

Log Message

Fix the QTouchWebView in debug segfault on shutdown introduced in 91979.
https://bugs.webkit.org/show_bug.cgi?id=64728

Reviewed by Benjamin Poulain.

unregisterTile is called in the tile's destructor, triggered in the TileSet's
destruction, which happens in the middle of the proxy's destruction
(after the m_tilesByID HashMap destruction).
Detach the tiles in the proxy's destructor to make sure they can cleanup
using a valid proxy.

* UIProcess/TiledDrawingAreaProxy.cpp:
(WebKit::TiledDrawingAreaProxy::~TiledDrawingAreaProxy):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (91993 => 91994)


--- trunk/Source/WebKit2/ChangeLog	2011-07-29 13:47:49 UTC (rev 91993)
+++ trunk/Source/WebKit2/ChangeLog	2011-07-29 15:28:55 UTC (rev 91994)
@@ -1,5 +1,21 @@
 2011-07-29  Jocelyn Turcotte  <[email protected]>
 
+        Fix the QTouchWebView in debug segfault on shutdown introduced in 91979.
+        https://bugs.webkit.org/show_bug.cgi?id=64728
+
+        Reviewed by Benjamin Poulain.
+
+        unregisterTile is called in the tile's destructor, triggered in the TileSet's
+        destruction, which happens in the middle of the proxy's destruction
+        (after the m_tilesByID HashMap destruction).
+        Detach the tiles in the proxy's destructor to make sure they can cleanup
+        using a valid proxy.
+
+        * UIProcess/TiledDrawingAreaProxy.cpp:
+        (WebKit::TiledDrawingAreaProxy::~TiledDrawingAreaProxy):
+
+2011-07-29  Jocelyn Turcotte  <[email protected]>
+
         Fix the QTouchWebView in debug broke in 91979.
         https://bugs.webkit.org/show_bug.cgi?id=64728
 

Modified: trunk/Source/WebKit2/UIProcess/TiledDrawingAreaProxy.cpp (91993 => 91994)


--- trunk/Source/WebKit2/UIProcess/TiledDrawingAreaProxy.cpp	2011-07-29 13:47:49 UTC (rev 91993)
+++ trunk/Source/WebKit2/UIProcess/TiledDrawingAreaProxy.cpp	2011-07-29 15:28:55 UTC (rev 91994)
@@ -111,6 +111,10 @@
 
 TiledDrawingAreaProxy::~TiledDrawingAreaProxy()
 {
+    // Disable updates on tiles to detach them from the proxy and cut the circular dependency.
+    if (m_previousTileSet)
+        disableTileSetUpdates(m_previousTileSet.get());
+    disableTileSetUpdates(m_currentTileSet.get());
 }
 
 void TiledDrawingAreaProxy::sizeDidChange()
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to