Title: [150982] branches/safari-537.43-branch/Source

Diff

Modified: branches/safari-537.43-branch/Source/WebCore/ChangeLog (150981 => 150982)


--- branches/safari-537.43-branch/Source/WebCore/ChangeLog	2013-05-30 21:00:47 UTC (rev 150981)
+++ branches/safari-537.43-branch/Source/WebCore/ChangeLog	2013-05-30 21:03:47 UTC (rev 150982)
@@ -1,5 +1,31 @@
 2013-05-30  Lucas Forschler  <[email protected]>
 
+        Merge r150948
+
+    2013-05-29  Simon Fraser  <[email protected]>
+
+            Fix paint-related milestones to not fire when the layer tree is frozen
+            https://bugs.webkit.org/show_bug.cgi?id=117012
+
+            Reviewed by Tim Horton.
+
+            In the previous code, it was possible to paint some layer and schedule
+            the m_paintRelatedMilestonesTimer, but then the layer tree was put into
+            a frozen state because the page redirected. However, the paint-related
+            milestones timer would still fire. This caused woes with header/footer
+            banners.
+
+            Fix by not firing paint-related milestones if the layer tree is frozen,
+            which we know via a new ChromeClient callback. When unfrozen, we'll
+            paint again, and fire the timer later.
+
+            * page/ChromeClient.h:
+            (WebCore::ChromeClient::layerTreeStateIsFrozen):
+            * rendering/RenderLayerCompositor.cpp:
+            (WebCore::RenderLayerCompositor::paintRelatedMilestonesTimerFired):
+
+2013-05-30  Lucas Forschler  <[email protected]>
+
         Merge r150935
 
     2013-05-28  Oliver Hunt  <[email protected]>

Modified: branches/safari-537.43-branch/Source/WebCore/page/ChromeClient.h (150981 => 150982)


--- branches/safari-537.43-branch/Source/WebCore/page/ChromeClient.h	2013-05-30 21:00:47 UTC (rev 150981)
+++ branches/safari-537.43-branch/Source/WebCore/page/ChromeClient.h	2013-05-30 21:03:47 UTC (rev 150982)
@@ -278,6 +278,9 @@
 
     // Returns a bitfield indicating conditions that can trigger the compositor.
     virtual CompositingTriggerFlags allowedCompositingTriggers() const { return static_cast<CompositingTriggerFlags>(AllTriggers); }
+    
+    // Returns true if layer tree updates are disabled.
+    virtual bool layerTreeStateIsFrozen() const { return false; }
 #endif
 
 #if PLATFORM(WIN) && USE(AVFOUNDATION)

Modified: branches/safari-537.43-branch/Source/WebCore/rendering/RenderLayerCompositor.cpp (150981 => 150982)


--- branches/safari-537.43-branch/Source/WebCore/rendering/RenderLayerCompositor.cpp	2013-05-30 21:00:47 UTC (rev 150981)
+++ branches/safari-537.43-branch/Source/WebCore/rendering/RenderLayerCompositor.cpp	2013-05-30 21:03:47 UTC (rev 150982)
@@ -3252,8 +3252,19 @@
 void RenderLayerCompositor::paintRelatedMilestonesTimerFired(Timer<RenderLayerCompositor>*)
 {
     FrameView* frameView = m_renderView ? m_renderView->frameView() : 0;
-    if (frameView)
-        frameView->firePaintRelatedMilestones();
+    if (!frameView)
+        return;
+
+    Frame* frame = frameView->frame();
+    Page* page = frame ? frame->page() : 0;
+    if (!page)
+        return;
+
+    // If the layer tree is frozen, we'll paint when it's unfrozen and schedule the timer again.
+    if (page->chrome().client()->layerTreeStateIsFrozen())
+        return;
+
+    frameView->firePaintRelatedMilestones();
 }
 
 } // namespace WebCore

Modified: branches/safari-537.43-branch/Source/WebKit2/ChangeLog (150981 => 150982)


--- branches/safari-537.43-branch/Source/WebKit2/ChangeLog	2013-05-30 21:00:47 UTC (rev 150981)
+++ branches/safari-537.43-branch/Source/WebKit2/ChangeLog	2013-05-30 21:03:47 UTC (rev 150982)
@@ -1,5 +1,24 @@
 2013-05-30  Lucas Forschler  <[email protected]>
 
+        Merge r150948
+
+    2013-05-29  Simon Fraser  <[email protected]>
+
+            Fix paint-related milestones to not fire when the layer tree is frozen
+            https://bugs.webkit.org/show_bug.cgi?id=117012
+
+            Reviewed by Tim Horton.
+
+            Implement ChromeClient::layerTreeStateIsFrozen() to return
+            the frozen state of the drawing area.
+
+            * WebProcess/WebCoreSupport/WebChromeClient.cpp:
+            (WebKit::WebChromeClient::layerTreeStateIsFrozen):
+            * WebProcess/WebCoreSupport/WebChromeClient.h:
+            (WebChromeClient):
+
+2013-05-30  Lucas Forschler  <[email protected]>
+
         Merge r150935
 
     2013-05-28  Oliver Hunt  <[email protected]>

Modified: branches/safari-537.43-branch/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp (150981 => 150982)


--- branches/safari-537.43-branch/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp	2013-05-30 21:00:47 UTC (rev 150981)
+++ branches/safari-537.43-branch/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp	2013-05-30 21:03:47 UTC (rev 150982)
@@ -781,6 +781,14 @@
         m_page->drawingArea()->scheduleCompositingLayerFlush();
 }
 
+
+bool WebChromeClient::layerTreeStateIsFrozen() const
+{
+    if (m_page->drawingArea())
+        return m_page->drawingArea()->layerTreeStateIsFrozen();
+
+    return false;
+}
 #endif
 
 #if ENABLE(TOUCH_EVENTS)

Modified: branches/safari-537.43-branch/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h (150981 => 150982)


--- branches/safari-537.43-branch/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h	2013-05-30 21:00:47 UTC (rev 150981)
+++ branches/safari-537.43-branch/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h	2013-05-30 21:03:47 UTC (rev 150982)
@@ -194,6 +194,8 @@
             CanvasTrigger |
             AnimationTrigger);
     }
+
+    virtual bool layerTreeStateIsFrozen() const OVERRIDE;
 #endif
 
 #if ENABLE(TOUCH_EVENTS)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to