Title: [121987] trunk/Source/WebCore
Revision
121987
Author
commit-qu...@webkit.org
Date
2012-07-06 10:47:34 -0700 (Fri, 06 Jul 2012)

Log Message

Drawing to accelerated 2D canvas causes compositor to recompute layer tree
https://bugs.webkit.org/show_bug.cgi?id=90630

Patch by Justin Novosad <ju...@chromium.org> on 2012-07-06
Reviewed by Simon Fraser.

No new tests: covered by existing canvas/compositing layout tests

Before this change, there was no distinction between canvas changes
that require recomputing the compositor tree and canvas changes that
only require re-display. The new CanvasPixelsChanged member of enum
ContentChangeType requests re-display without re-layout.

* html/canvas/CanvasRenderingContext2D.cpp:
(WebCore::CanvasRenderingContext2D::didDraw):
* rendering/RenderBoxModelObject.h:
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::contentChanged):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (121986 => 121987)


--- trunk/Source/WebCore/ChangeLog	2012-07-06 17:39:20 UTC (rev 121986)
+++ trunk/Source/WebCore/ChangeLog	2012-07-06 17:47:34 UTC (rev 121987)
@@ -1,3 +1,23 @@
+2012-07-06  Justin Novosad  <ju...@chromium.org>
+
+        Drawing to accelerated 2D canvas causes compositor to recompute layer tree
+        https://bugs.webkit.org/show_bug.cgi?id=90630
+
+        Reviewed by Simon Fraser.
+
+        No new tests: covered by existing canvas/compositing layout tests
+
+        Before this change, there was no distinction between canvas changes
+        that require recomputing the compositor tree and canvas changes that
+        only require re-display. The new CanvasPixelsChanged member of enum
+        ContentChangeType requests re-display without re-layout.
+
+        * html/canvas/CanvasRenderingContext2D.cpp:
+        (WebCore::CanvasRenderingContext2D::didDraw):
+        * rendering/RenderBoxModelObject.h:
+        * rendering/RenderLayerBacking.cpp:
+        (WebCore::RenderLayerBacking::contentChanged):
+
 2012-07-06  Pavel Feldman  <pfeld...@chromium.org>
 
         Web Inspector: get rid of this._lastMarkedRange in TextEditor.

Modified: trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp (121986 => 121987)


--- trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp	2012-07-06 17:39:20 UTC (rev 121986)
+++ trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp	2012-07-06 17:47:34 UTC (rev 121987)
@@ -1768,7 +1768,7 @@
     if (isAccelerated()) {
         RenderBox* renderBox = canvas()->renderBox();
         if (renderBox && renderBox->hasAcceleratedCompositing()) {
-            renderBox->contentChanged(CanvasChanged);
+            renderBox->contentChanged(CanvasPixelsChanged);
             canvas()->clearCopiedImage();
             return;
         }

Modified: trunk/Source/WebCore/rendering/RenderBoxModelObject.h (121986 => 121987)


--- trunk/Source/WebCore/rendering/RenderBoxModelObject.h	2012-07-06 17:39:20 UTC (rev 121986)
+++ trunk/Source/WebCore/rendering/RenderBoxModelObject.h	2012-07-06 17:47:34 UTC (rev 121987)
@@ -44,6 +44,7 @@
     ImageChanged,
     MaskImageChanged,
     CanvasChanged,
+    CanvasPixelsChanged,
     VideoChanged,
     FullScreenChanged
 };

Modified: trunk/Source/WebCore/rendering/RenderLayerBacking.cpp (121986 => 121987)


--- trunk/Source/WebCore/rendering/RenderLayerBacking.cpp	2012-07-06 17:39:20 UTC (rev 121986)
+++ trunk/Source/WebCore/rendering/RenderLayerBacking.cpp	2012-07-06 17:47:34 UTC (rev 121987)
@@ -1033,7 +1033,7 @@
     }
 
 #if ENABLE(WEBGL) || ENABLE(ACCELERATED_2D_CANVAS)
-    if ((changeType == CanvasChanged) && isAcceleratedCanvas(renderer())) {
+    if ((changeType == CanvasChanged || changeType == CanvasPixelsChanged) && isAcceleratedCanvas(renderer())) {
         m_graphicsLayer->setContentsNeedsDisplay();
         return;
     }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to