Title: [101838] trunk/Source/WebKit2
Revision
101838
Author
[email protected]
Date
2011-12-02 11:21:19 -0800 (Fri, 02 Dec 2011)

Log Message

WebKit2: Freeze the state of the layer tree until frame load completion if incremental rendering is suppressed
https://bugs.webkit.org/show_bug.cgi?id=73641

Reviewed by Darin Adler.

* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDidFirstLayout): Do not
un-freeze the layer tree state if incremental rendering is suppressed.
* WebProcess/WebPage/DrawingArea.h:
(WebKit::DrawingArea::layerTreeStateIsFrozen): Add a getter for
m_layerTreeStateIsFrozen.
* WebProcess/WebPage/DrawingAreaImpl.h:
(WebKit::DrawingAreaImpl::layerTreeStateIsFrozen): Ditto.
* WebProcess/WebPage/ca/LayerTreeHostCA.cpp:
(WebKit::LayerTreeHostCA::initialize): WebFrameLoaderClient might have
tried to freeze the state of the layer tree before the layer tree host
was created. When creating the layer tree host, only schedule a layer
flush if the layer tree state isn't frozen.

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (101837 => 101838)


--- trunk/Source/WebKit2/ChangeLog	2011-12-02 19:19:49 UTC (rev 101837)
+++ trunk/Source/WebKit2/ChangeLog	2011-12-02 19:21:19 UTC (rev 101838)
@@ -1,3 +1,24 @@
+2011-12-02  Andy Estes  <[email protected]>
+
+        WebKit2: Freeze the state of the layer tree until frame load completion if incremental rendering is suppressed
+        https://bugs.webkit.org/show_bug.cgi?id=73641
+
+        Reviewed by Darin Adler.
+
+        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
+        (WebKit::WebFrameLoaderClient::dispatchDidFirstLayout): Do not
+        un-freeze the layer tree state if incremental rendering is suppressed.
+        * WebProcess/WebPage/DrawingArea.h:
+        (WebKit::DrawingArea::layerTreeStateIsFrozen): Add a getter for
+        m_layerTreeStateIsFrozen.
+        * WebProcess/WebPage/DrawingAreaImpl.h:
+        (WebKit::DrawingAreaImpl::layerTreeStateIsFrozen): Ditto.
+        * WebProcess/WebPage/ca/LayerTreeHostCA.cpp:
+        (WebKit::LayerTreeHostCA::initialize): WebFrameLoaderClient might have
+        tried to freeze the state of the layer tree before the layer tree host
+        was created. When creating the layer tree host, only schedule a layer
+        flush if the layer tree state isn't frozen.
+
 2011-12-02  Nayan Kumar K  <[email protected]>
 
         [WebKit2][gtk] Add 'enable-dns-prefetching' property to WebKitSettings

Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp (101837 => 101838)


--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp	2011-12-02 19:19:49 UTC (rev 101837)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp	2011-12-02 19:21:19 UTC (rev 101838)
@@ -64,6 +64,7 @@
 #include <WebCore/PluginData.h>
 #include <WebCore/ProgressTracker.h>
 #include <WebCore/ResourceError.h>
+#include <WebCore/Settings.h>
 #include <WebCore/UIEventWithKeyState.h>
 #include <WebCore/Widget.h>
 #include <WebCore/WindowFeatures.h>
@@ -532,7 +533,7 @@
     // Notify the UIProcess.
     webPage->send(Messages::WebPageProxy::DidFirstLayoutForFrame(m_frame->frameID(), InjectedBundleUserMessageEncoder(userData.get())));
 
-    if (m_frame == m_frame->page()->mainWebFrame())
+    if (m_frame == m_frame->page()->mainWebFrame() && !webPage->corePage()->settings()->suppressIncrementalRendering())
         webPage->drawingArea()->setLayerTreeStateIsFrozen(false);
 }
 

Modified: trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.h (101837 => 101838)


--- trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.h	2011-12-02 19:19:49 UTC (rev 101837)
+++ trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.h	2011-12-02 19:21:19 UTC (rev 101838)
@@ -69,6 +69,7 @@
     virtual void pageBackgroundTransparencyChanged() { }
     virtual void forceRepaint() { }
     virtual void setLayerTreeStateIsFrozen(bool) { }
+    virtual bool layerTreeStateIsFrozen() const { return false; }
 
     virtual void didInstallPageOverlay() { }
     virtual void didUninstallPageOverlay() { }

Modified: trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.h (101837 => 101838)


--- trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.h	2011-12-02 19:19:49 UTC (rev 101837)
+++ trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.h	2011-12-02 19:21:19 UTC (rev 101838)
@@ -54,6 +54,7 @@
     virtual void setNeedsDisplay(const WebCore::IntRect&);
     virtual void scroll(const WebCore::IntRect& scrollRect, const WebCore::IntSize& scrollOffset);
     virtual void setLayerTreeStateIsFrozen(bool);
+    virtual bool layerTreeStateIsFrozen() const { return m_layerTreeStateIsFrozen; }
     virtual void forceRepaint();
 
     virtual void enableDisplayThrottling();

Modified: trunk/Source/WebKit2/WebProcess/WebPage/ca/LayerTreeHostCA.cpp (101837 => 101838)


--- trunk/Source/WebKit2/WebProcess/WebPage/ca/LayerTreeHostCA.cpp	2011-12-02 19:19:49 UTC (rev 101837)
+++ trunk/Source/WebKit2/WebProcess/WebPage/ca/LayerTreeHostCA.cpp	2011-12-02 19:21:19 UTC (rev 101838)
@@ -77,6 +77,7 @@
 
     platformInitialize(m_layerTreeContext);
 
+    setLayerFlushSchedulingEnabled(!m_webPage->drawingArea()->layerTreeStateIsFrozen());
     scheduleLayerFlush();
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to