Title: [112497] trunk/Source/WebCore
Revision
112497
Author
[email protected]
Date
2012-03-28 20:42:48 -0700 (Wed, 28 Mar 2012)

Log Message

[CSS Filters] Avoid rebuilding FEFilters when RenderLayer is destroyed
https://bugs.webkit.org/show_bug.cgi?id=82524

Reviewed by Dean Jackson.

RenderLayer::~RenderLayer is calling clearBacking which updated the m_filter with new filters,
even though they were to be deleted a couple of lines below. This change avoids updating the filters,
if we are in the "destroyed" state.

No new tests. This change has no visible results to HTML or _javascript_, so it cannot be tested without a debugger.

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::~RenderLayer):
(WebCore::RenderLayer::clearBacking):
* rendering/RenderLayer.h:
(RenderLayer):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (112496 => 112497)


--- trunk/Source/WebCore/ChangeLog	2012-03-29 03:00:19 UTC (rev 112496)
+++ trunk/Source/WebCore/ChangeLog	2012-03-29 03:42:48 UTC (rev 112497)
@@ -1,3 +1,22 @@
+2012-03-28  Alexandru Chiculita  <[email protected]>
+
+        [CSS Filters] Avoid rebuilding FEFilters when RenderLayer is destroyed
+        https://bugs.webkit.org/show_bug.cgi?id=82524
+
+        Reviewed by Dean Jackson.
+
+        RenderLayer::~RenderLayer is calling clearBacking which updated the m_filter with new filters,
+        even though they were to be deleted a couple of lines below. This change avoids updating the filters,
+        if we are in the "destroyed" state.
+
+        No new tests. This change has no visible results to HTML or _javascript_, so it cannot be tested without a debugger.
+
+        * rendering/RenderLayer.cpp:
+        (WebCore::RenderLayer::~RenderLayer):
+        (WebCore::RenderLayer::clearBacking):
+        * rendering/RenderLayer.h:
+        (RenderLayer):
+
 2012-03-28  Gyuyoung Kim  <[email protected]>
 
         Remove ScriptExecutionContext from NavigatorBattery.idl

Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (112496 => 112497)


--- trunk/Source/WebCore/rendering/RenderLayer.cpp	2012-03-29 03:00:19 UTC (rev 112496)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp	2012-03-29 03:42:48 UTC (rev 112497)
@@ -223,7 +223,7 @@
     delete m_marquee;
 
 #if USE(ACCELERATED_COMPOSITING)
-    clearBacking();
+    clearBacking(true);
 #endif
     
     // Make sure we have no lingering clip rects.
@@ -3984,16 +3984,18 @@
     return m_backing.get();
 }
 
-void RenderLayer::clearBacking()
+void RenderLayer::clearBacking(bool layerBeingDestroyed)
 {
     if (m_backing && !renderer()->documentBeingDestroyed())
         compositor()->layerBecameNonComposited(this);
     m_backing.clear();
 
 #if ENABLE(CSS_FILTERS)
-    updateOrRemoveFilterEffect();
+    if (!layerBeingDestroyed)
+        updateOrRemoveFilterEffect();
+#else
+    UNUSED_PARAM(layerBeingDestroyed);
 #endif
-    
 }
 
 bool RenderLayer::hasCompositedMask() const

Modified: trunk/Source/WebCore/rendering/RenderLayer.h (112496 => 112497)


--- trunk/Source/WebCore/rendering/RenderLayer.h	2012-03-29 03:00:19 UTC (rev 112496)
+++ trunk/Source/WebCore/rendering/RenderLayer.h	2012-03-29 03:42:48 UTC (rev 112497)
@@ -540,7 +540,7 @@
     bool hasCompositedMask() const;
     RenderLayerBacking* backing() const { return m_backing.get(); }
     RenderLayerBacking* ensureBacking();
-    void clearBacking();
+    void clearBacking(bool layerBeingDestroyed = false);
     virtual GraphicsLayer* layerForHorizontalScrollbar() const;
     virtual GraphicsLayer* layerForVerticalScrollbar() const;
     virtual GraphicsLayer* layerForScrollCorner() const;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to