Title: [124829] trunk/Source/WebCore
Revision
124829
Author
[email protected]
Date
2012-08-06 18:34:14 -0700 (Mon, 06 Aug 2012)

Log Message

Clear out the TileCache backpointer for all tile layers when the tile cache is destroyed
https://bugs.webkit.org/show_bug.cgi?id=93317
<rdar://problem/11566543>

Reviewed by Dean Jackson.

It seems that in some rare cases, the tile cache layer can be destroyed in the same transaction as tile layers
are being asked to paint. Make sure to null out the TileCache back pointer for all layers in the TileCache destructor.

* platform/graphics/ca/mac/TileCache.mm:
(WebCore::TileCache::~TileCache):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (124828 => 124829)


--- trunk/Source/WebCore/ChangeLog	2012-08-07 01:19:05 UTC (rev 124828)
+++ trunk/Source/WebCore/ChangeLog	2012-08-07 01:34:14 UTC (rev 124829)
@@ -1,3 +1,17 @@
+2012-08-06  Anders Carlsson  <[email protected]>
+
+        Clear out the TileCache backpointer for all tile layers when the tile cache is destroyed
+        https://bugs.webkit.org/show_bug.cgi?id=93317
+        <rdar://problem/11566543>
+
+        Reviewed by Dean Jackson.
+
+        It seems that in some rare cases, the tile cache layer can be destroyed in the same transaction as tile layers
+        are being asked to paint. Make sure to null out the TileCache back pointer for all layers in the TileCache destructor.
+
+        * platform/graphics/ca/mac/TileCache.mm:
+        (WebCore::TileCache::~TileCache):
+
 2012-08-06  Sheriff Bot  <[email protected]>
 
         Unreviewed, rolling out r124816.

Modified: trunk/Source/WebCore/platform/graphics/ca/mac/TileCache.mm (124828 => 124829)


--- trunk/Source/WebCore/platform/graphics/ca/mac/TileCache.mm	2012-08-07 01:19:05 UTC (rev 124828)
+++ trunk/Source/WebCore/platform/graphics/ca/mac/TileCache.mm	2012-08-07 01:34:14 UTC (rev 124829)
@@ -73,6 +73,11 @@
 TileCache::~TileCache()
 {
     ASSERT(isMainThread());
+
+    for (TileMap::iterator it = m_tiles.begin(), end = m_tiles.end(); it != end; ++it) {
+        WebTileLayer* tileLayer = it->second.get();
+        [tileLayer setTileCache:0];
+    }
 }
 
 void TileCache::tileCacheLayerBoundsChanged()
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to