Title: [120117] trunk/Source
Revision
120117
Author
[email protected]
Date
2012-06-12 13:54:41 -0700 (Tue, 12 Jun 2012)

Log Message

[chromium] REGRESSION(119769): Canvas2DLayerBridge may go away before its TextureLayerChromium
https://bugs.webkit.org/show_bug.cgi?id=88910

Reviewed by Adrienne Walker.

Source/WebCore:

Unregister the bridge as its TextureLayerChromium client when going away.

Covered by new unit test in Canvas2DLayerBridgeTest.cpp.

* platform/graphics/chromium/Canvas2DLayerBridge.cpp:
(WebCore::Canvas2DLayerBridge::~Canvas2DLayerBridge):

Source/WebKit/chromium:

New unit test to verify that we can still update a TextureLayerChromium after the bridge owning it has gone
away.

* tests/Canvas2DLayerBridgeTest.cpp:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (120116 => 120117)


--- trunk/Source/WebCore/ChangeLog	2012-06-12 20:54:12 UTC (rev 120116)
+++ trunk/Source/WebCore/ChangeLog	2012-06-12 20:54:41 UTC (rev 120117)
@@ -1,3 +1,17 @@
+2012-06-12  James Robinson  <[email protected]>
+
+        [chromium] REGRESSION(119769): Canvas2DLayerBridge may go away before its TextureLayerChromium
+        https://bugs.webkit.org/show_bug.cgi?id=88910
+
+        Reviewed by Adrienne Walker.
+
+        Unregister the bridge as its TextureLayerChromium client when going away.
+
+        Covered by new unit test in Canvas2DLayerBridgeTest.cpp.
+
+        * platform/graphics/chromium/Canvas2DLayerBridge.cpp:
+        (WebCore::Canvas2DLayerBridge::~Canvas2DLayerBridge):
+
 2012-06-12  Alec Flett  <[email protected]>
 
         IndexedDB: Error codes, phase two

Modified: trunk/Source/WebCore/platform/graphics/chromium/Canvas2DLayerBridge.cpp (120116 => 120117)


--- trunk/Source/WebCore/platform/graphics/chromium/Canvas2DLayerBridge.cpp	2012-06-12 20:54:12 UTC (rev 120116)
+++ trunk/Source/WebCore/platform/graphics/chromium/Canvas2DLayerBridge.cpp	2012-06-12 20:54:41 UTC (rev 120117)
@@ -106,6 +106,7 @@
         GLC(m_context.get(), m_context->deleteTexture(m_frontBufferTexture));
         m_context->flush();
     }
+    m_layer->clearClient();
 }
 
 SkCanvas* Canvas2DLayerBridge::skCanvas(SkDevice* device)

Modified: trunk/Source/WebKit/chromium/ChangeLog (120116 => 120117)


--- trunk/Source/WebKit/chromium/ChangeLog	2012-06-12 20:54:12 UTC (rev 120116)
+++ trunk/Source/WebKit/chromium/ChangeLog	2012-06-12 20:54:41 UTC (rev 120117)
@@ -1,3 +1,15 @@
+2012-06-12  James Robinson  <[email protected]>
+
+        [chromium] REGRESSION(119769): Canvas2DLayerBridge may go away before its TextureLayerChromium
+        https://bugs.webkit.org/show_bug.cgi?id=88910
+
+        Reviewed by Adrienne Walker.
+
+        New unit test to verify that we can still update a TextureLayerChromium after the bridge owning it has gone
+        away.
+
+        * tests/Canvas2DLayerBridgeTest.cpp:
+
 2012-06-12  Adrienne Walker  <[email protected]>
 
         [chromium] Fix incorrect LayerChromium scroll position for RTL overflow pages

Modified: trunk/Source/WebKit/chromium/tests/Canvas2DLayerBridgeTest.cpp (120116 => 120117)


--- trunk/Source/WebKit/chromium/tests/Canvas2DLayerBridgeTest.cpp	2012-06-12 20:54:12 UTC (rev 120116)
+++ trunk/Source/WebKit/chromium/tests/Canvas2DLayerBridgeTest.cpp	2012-06-12 20:54:41 UTC (rev 120117)
@@ -152,5 +152,17 @@
     fullLifecycleTest(Threaded, Deferred);
 }
 
+TEST(Canvas2DLayerBridgeTest2, testClearClient)
+{
+    GraphicsContext3D::Attributes attrs;
+
+    RefPtr<GraphicsContext3D> mainContext = GraphicsContext3DPrivate::createGraphicsContextFromWebContext(adoptPtr(new MockCanvasContext()), GraphicsContext3D::RenderDirectlyToHostWindow);
+    OwnPtr<Canvas2DLayerBridge> bridge = Canvas2DLayerBridge::create(mainContext.get(), IntSize(100, 100), Deferred, 1);
+    RefPtr<LayerChromium> layer = bridge->layer();
+    bridge.clear();
+    CCTextureUpdater updater;
+    layer->update(updater, 0);
+}
+
 } // namespace
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to