Title: [159956] trunk/Source/WebKit2
Revision
159956
Author
timothy_hor...@apple.com
Date
2013-12-02 12:56:13 -0800 (Mon, 02 Dec 2013)

Log Message

Remote Layer Tree: Hook up setLayerTreeStateIsFrozen
https://bugs.webkit.org/show_bug.cgi?id=124872

Reviewed by Brent Fulgham.

setLayerTreeStateIsFrozen is the mechanism used to ensure that
layer property changes (including new backing store) aren't committed
while e.g. the page is reconfigured for printing.

* WebProcess/WebPage/mac/RemoteLayerTreeContext.h:
* WebProcess/WebPage/mac/RemoteLayerTreeContext.mm:
(WebKit::RemoteLayerTreeContext::RemoteLayerTreeContext):
(WebKit::RemoteLayerTreeContext::flushLayers):
(WebKit::RemoteLayerTreeContext::setIsFlushingSuspended):
* WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
* WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
(WebKit::RemoteLayerTreeDrawingArea::setLayerTreeStateIsFrozen):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (159955 => 159956)


--- trunk/Source/WebKit2/ChangeLog	2013-12-02 20:55:28 UTC (rev 159955)
+++ trunk/Source/WebKit2/ChangeLog	2013-12-02 20:56:13 UTC (rev 159956)
@@ -1,5 +1,25 @@
 2013-12-02  Tim Horton  <timothy_hor...@apple.com>
 
+        Remote Layer Tree: Hook up setLayerTreeStateIsFrozen
+        https://bugs.webkit.org/show_bug.cgi?id=124872
+
+        Reviewed by Brent Fulgham.
+
+        setLayerTreeStateIsFrozen is the mechanism used to ensure that
+        layer property changes (including new backing store) aren't committed
+        while e.g. the page is reconfigured for printing.
+
+        * WebProcess/WebPage/mac/RemoteLayerTreeContext.h:
+        * WebProcess/WebPage/mac/RemoteLayerTreeContext.mm:
+        (WebKit::RemoteLayerTreeContext::RemoteLayerTreeContext):
+        (WebKit::RemoteLayerTreeContext::flushLayers):
+        (WebKit::RemoteLayerTreeContext::setIsFlushingSuspended):
+        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
+        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
+        (WebKit::RemoteLayerTreeDrawingArea::setLayerTreeStateIsFrozen):
+
+2013-12-02  Tim Horton  <timothy_hor...@apple.com>
+
         Remote Layer Tree: Disable direct image compositing
         https://bugs.webkit.org/show_bug.cgi?id=124875
         <rdar://problem/15446024>

Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeContext.h (159955 => 159956)


--- trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeContext.h	2013-12-02 20:55:28 UTC (rev 159955)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeContext.h	2013-12-02 20:56:13 UTC (rev 159956)
@@ -56,6 +56,8 @@
 
     LayerHostingMode layerHostingMode() const { return m_webPage->layerHostingMode(); }
 
+    void setIsFlushingSuspended(bool);
+
 private:
     // WebCore::GraphicsLayerFactory
     virtual std::unique_ptr<WebCore::GraphicsLayer> createGraphicsLayer(WebCore::GraphicsLayerClient*) OVERRIDE;
@@ -71,6 +73,9 @@
 
     Vector<RemoteLayerTreeTransaction::LayerCreationProperties> m_createdLayers;
     Vector<RemoteLayerTreeTransaction::LayerID> m_destroyedLayers;
+
+    bool m_isFlushingSuspended;
+    bool m_hasDeferredFlush;
 };
 
 } // namespace WebKit

Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeContext.mm (159955 => 159956)


--- trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeContext.mm	2013-12-02 20:55:28 UTC (rev 159955)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeContext.mm	2013-12-02 20:56:13 UTC (rev 159956)
@@ -43,6 +43,8 @@
 RemoteLayerTreeContext::RemoteLayerTreeContext(WebPage* webPage)
     : m_webPage(webPage)
     , m_layerFlushTimer(this, &RemoteLayerTreeContext::layerFlushTimerFired)
+    , m_isFlushingSuspended(false)
+    , m_hasDeferredFlush(false)
 {
 }
 
@@ -114,6 +116,11 @@
     if (!m_rootLayer)
         return;
 
+    if (m_isFlushingSuspended) {
+        m_hasDeferredFlush = true;
+        return;
+    }
+
     RemoteLayerTreeTransaction transaction;
 
     transaction.setRootLayerID(m_rootLayer->layerID());
@@ -131,4 +138,17 @@
     m_webPage->send(Messages::RemoteLayerTreeHost::Commit(transaction));
 }
 
+void RemoteLayerTreeContext::setIsFlushingSuspended(bool isFrozen)
+{
+    if (m_isFlushingSuspended == isFrozen)
+        return;
+
+    m_isFlushingSuspended = isFrozen;
+
+    if (!m_isFlushingSuspended && m_hasDeferredFlush) {
+        m_hasDeferredFlush = false;
+        scheduleLayerFlush();
+    }
+}
+
 } // namespace WebKit

Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h (159955 => 159956)


--- trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h	2013-12-02 20:55:28 UTC (rev 159955)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h	2013-12-02 20:56:13 UTC (rev 159956)
@@ -64,6 +64,8 @@
     virtual void setPageOverlayNeedsDisplay(PageOverlay*, const WebCore::IntRect&) OVERRIDE;
     virtual void setPageOverlayOpacity(PageOverlay*, float) OVERRIDE;
 
+    virtual void setLayerTreeStateIsFrozen(bool) OVERRIDE;
+
     // WebCore::GraphicsLayerClient
     virtual void notifyAnimationStarted(const WebCore::GraphicsLayer*, double time) OVERRIDE { }
     virtual void notifyFlushRequired(const WebCore::GraphicsLayer*) OVERRIDE { }

Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm (159955 => 159956)


--- trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm	2013-12-02 20:55:28 UTC (rev 159955)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm	2013-12-02 20:56:13 UTC (rev 159956)
@@ -187,4 +187,9 @@
     return m_webPage->corePage()->deviceScaleFactor();
 }
 
+void RemoteLayerTreeDrawingArea::setLayerTreeStateIsFrozen(bool isFrozen)
+{
+    m_remoteLayerTreeContext->setIsFlushingSuspended(isFrozen);
+}
+
 } // namespace WebKit
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to