Title: [142112] trunk
Revision
142112
Author
[email protected]
Date
2013-02-07 06:47:50 -0800 (Thu, 07 Feb 2013)

Log Message

[CoordinatedGraphics] Use ScrollingCoordinator to track fixed layers
https://bugs.webkit.org/show_bug.cgi?id=108990

.:

Reviewed by Noam Rosenthal.

Add a new test that allow us to remove the fixed positioning of a layer but still keeping
it compositing. Coordinated Graphics had a bug where the CoordinatedSceneGraph would still
count this layer as fixed position.

* ManualTests/remove-fixed-position-but-keep-compositing.html: Added.

Source/WebCore:

Reviewed by Noam Rosenthal.

WebCore keeps ScrollingCoordinator up-to-date about whether layers are fixed or not, so we
don't need to traverse the tree every frame to get this information.

The function ScrollingCoordinator::setLayerIsFixedToContainerLayer() is called when
RenderLayerBacking is updating its graphics layers.

The new code also works in new situations where the previous was broken: if a layer changed
from being fixed to not fixed (but still kept as a layer for other reasons), the layer will
be correctly updated. Previous implementation only had logic to mark layers as fixed, but
not the other way round. A manual test was added to illustrate the solved problem.

Testing was done with the existing manual tests that make use of "position:fixed". Automatic
tests are mostly not affected by this because usage of this information affects only the
UseFixedLayout mode, not used by default in WebKitTestRunner. Work to improve this situation
will be tracked in bug https://bugs.webkit.org/show_bug.cgi?id=109175.

* CMakeLists.txt:
* Target.pri:
* WebCore.pri:
* page/scrolling/ScrollingCoordinator.cpp:
(WebCore::ScrollingCoordinator::create): create specific version of ScrollingCoordinator.
* page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.cpp: Added.
(WebCore):
(WebCore::ScrollingCoordinatorCoordinatedGraphics::ScrollingCoordinatorCoordinatedGraphics):
(WebCore::ScrollingCoordinatorCoordinatedGraphics::setLayerIsFixedToContainerLayer):
update layer information using existing hook in ScrollingCoordinator.
* page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.h: Added.
(WebCore):
(ScrollingCoordinatorCoordinatedGraphics):
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::setFixedToViewport): now that setting viewport is not
embedded in the synchronization work, we need to mark the layer so it is updated in the
next frame.
(WebCore):
(WebCore::CoordinatedGraphicsLayer::flushCompositingState): remove call to syncFixedLayers().
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
(CoordinatedGraphicsLayerClient): remove now unused syncFixedLayers() from client.
(CoordinatedGraphicsLayer):

Source/WebKit2:

Reviewed by Noam Rosenthal.
Signed off for WebKit2 by Simon Fraser.

WebCore keeps ScrollingCoordinator up-to-date about whether layers are fixed or not, so we
don't need to traverse the tree every frame to get this information.

* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp: remove
syncFixedLayers() and its helper functions. Those were used to identify the fixed layers
and are not needed anymore.
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:
* WebProcess/WebPage/DrawingAreaImpl.cpp:
(WebKit::DrawingAreaImpl::DrawingAreaImpl): enable the scrolling coordinator usage for
Coordinated Graphics.

Modified Paths

Added Paths

Diff

Modified: trunk/ChangeLog (142111 => 142112)


--- trunk/ChangeLog	2013-02-07 14:42:20 UTC (rev 142111)
+++ trunk/ChangeLog	2013-02-07 14:47:50 UTC (rev 142112)
@@ -1,3 +1,16 @@
+2013-02-07  Caio Marcelo de Oliveira Filho  <[email protected]>
+
+        [CoordinatedGraphics] Use ScrollingCoordinator to track fixed layers
+        https://bugs.webkit.org/show_bug.cgi?id=108990
+
+        Reviewed by Noam Rosenthal.
+
+        Add a new test that allow us to remove the fixed positioning of a layer but still keeping
+        it compositing. Coordinated Graphics had a bug where the CoordinatedSceneGraph would still
+        count this layer as fixed position.
+
+        * ManualTests/remove-fixed-position-but-keep-compositing.html: Added.
+
 2013-02-07  Gustavo Noronha Silva  <[email protected]>
 
         Unreviewed build fix after r141196 for 32 bits autotools.

Added: trunk/ManualTests/remove-fixed-position-but-keep-compositing.html (0 => 142112)


--- trunk/ManualTests/remove-fixed-position-but-keep-compositing.html	                        (rev 0)
+++ trunk/ManualTests/remove-fixed-position-but-keep-compositing.html	2013-02-07 14:47:50 UTC (rev 142112)
@@ -0,0 +1,46 @@
+<html>
+
+  <body style="height: 10000px">
+
+  <button id="toggle">Toggle</button>
+
+  <p>
+  The black rectangle starts fixed, and due to a -webkit-transform will be composited. Toggle to unfix it and scroll: the black rectangle should scroll with the page and not overlap the numbers.
+  </p>
+
+  <div id="rect" style="background-color: black; width: 200px; height: 200px; position: fixed; -webkit-transform: translate3d(0,0,0)">
+  </div>
+
+1<br>
+2<br>
+3<br>
+4<br>
+5<br>
+6<br>
+7<br>
+8<br>
+9<br>
+10<br>
+11<br>
+12<br>
+13<br>
+14<br>
+15<br>
+16<br>
+17<br>
+18<br>
+19<br>
+20<br>
+
+<script>
+var rect = document.getElementById("rect");
+var toggle = document.getElementById("toggle");
+
+toggle.addEventListener("click", function (ev) {
+    if (rect.style.position === "fixed") {
+        rect.style.position = "";
+    } else {
+        rect.style.position = "fixed";
+    }
+});
+</script>

Modified: trunk/Source/WebCore/CMakeLists.txt (142111 => 142112)


--- trunk/Source/WebCore/CMakeLists.txt	2013-02-07 14:42:20 UTC (rev 142111)
+++ trunk/Source/WebCore/CMakeLists.txt	2013-02-07 14:47:50 UTC (rev 142112)
@@ -44,6 +44,7 @@
     "${WEBCORE_DIR}/page"
     "${WEBCORE_DIR}/page/animation"
     "${WEBCORE_DIR}/page/scrolling"
+    "${WEBCORE_DIR}/page/scrolling/coordinatedgraphics"
     "${WEBCORE_DIR}/platform"
     "${WEBCORE_DIR}/platform/animation"
     "${WEBCORE_DIR}/platform/audio"
@@ -1820,6 +1821,7 @@
 
     page/scrolling/ScrollingConstraints.cpp
     page/scrolling/ScrollingCoordinator.cpp
+    page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.cpp
 
     platform/Arena.cpp
     platform/AsyncFileSystem.cpp

Modified: trunk/Source/WebCore/ChangeLog (142111 => 142112)


--- trunk/Source/WebCore/ChangeLog	2013-02-07 14:42:20 UTC (rev 142111)
+++ trunk/Source/WebCore/ChangeLog	2013-02-07 14:47:50 UTC (rev 142112)
@@ -1,3 +1,49 @@
+2013-02-07  Caio Marcelo de Oliveira Filho  <[email protected]>
+
+        [CoordinatedGraphics] Use ScrollingCoordinator to track fixed layers
+        https://bugs.webkit.org/show_bug.cgi?id=108990
+
+        Reviewed by Noam Rosenthal.
+
+        WebCore keeps ScrollingCoordinator up-to-date about whether layers are fixed or not, so we
+        don't need to traverse the tree every frame to get this information.
+
+        The function ScrollingCoordinator::setLayerIsFixedToContainerLayer() is called when
+        RenderLayerBacking is updating its graphics layers.
+
+        The new code also works in new situations where the previous was broken: if a layer changed
+        from being fixed to not fixed (but still kept as a layer for other reasons), the layer will
+        be correctly updated. Previous implementation only had logic to mark layers as fixed, but
+        not the other way round. A manual test was added to illustrate the solved problem.
+
+        Testing was done with the existing manual tests that make use of "position:fixed". Automatic
+        tests are mostly not affected by this because usage of this information affects only the
+        UseFixedLayout mode, not used by default in WebKitTestRunner. Work to improve this situation
+        will be tracked in bug https://bugs.webkit.org/show_bug.cgi?id=109175.
+
+        * CMakeLists.txt:
+        * Target.pri:
+        * WebCore.pri:
+        * page/scrolling/ScrollingCoordinator.cpp:
+        (WebCore::ScrollingCoordinator::create): create specific version of ScrollingCoordinator.
+        * page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.cpp: Added.
+        (WebCore):
+        (WebCore::ScrollingCoordinatorCoordinatedGraphics::ScrollingCoordinatorCoordinatedGraphics):
+        (WebCore::ScrollingCoordinatorCoordinatedGraphics::setLayerIsFixedToContainerLayer):
+        update layer information using existing hook in ScrollingCoordinator.
+        * page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.h: Added.
+        (WebCore):
+        (ScrollingCoordinatorCoordinatedGraphics):
+        * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
+        (WebCore::CoordinatedGraphicsLayer::setFixedToViewport): now that setting viewport is not
+        embedded in the synchronization work, we need to mark the layer so it is updated in the
+        next frame.
+        (WebCore):
+        (WebCore::CoordinatedGraphicsLayer::flushCompositingState): remove call to syncFixedLayers().
+        * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
+        (CoordinatedGraphicsLayerClient): remove now unused syncFixedLayers() from client.
+        (CoordinatedGraphicsLayer):
+
 2013-02-07  Keishi Hattori  <[email protected]>
 
         REGRESSION (r140778): Calendar Picker doesn't open when the element has the required attribute

Modified: trunk/Source/WebCore/Target.pri (142111 => 142112)


--- trunk/Source/WebCore/Target.pri	2013-02-07 14:42:20 UTC (rev 142111)
+++ trunk/Source/WebCore/Target.pri	2013-02-07 14:47:50 UTC (rev 142112)
@@ -4066,6 +4066,7 @@
 
 use?(3D_GRAPHICS) {
     HEADERS += \
+        page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.h \
         platform/graphics/cpu/arm/GraphicsContext3DNEON.h \
         platform/graphics/ANGLEWebKitBridge.h \
         platform/graphics/Extensions3D.h \
@@ -4090,6 +4091,7 @@
         platform/graphics/texmap/coordinated/UpdateAtlas.h
 
     SOURCES += \
+        page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.cpp \
         platform/graphics/ANGLEWebKitBridge.cpp \
         platform/graphics/GraphicsContext3D.cpp \
         platform/graphics/gpu/DrawingBuffer.cpp \

Modified: trunk/Source/WebCore/WebCore.pri (142111 => 142112)


--- trunk/Source/WebCore/WebCore.pri	2013-02-07 14:42:20 UTC (rev 142111)
+++ trunk/Source/WebCore/WebCore.pri	2013-02-07 14:47:50 UTC (rev 142112)
@@ -50,6 +50,7 @@
     $$SOURCE_DIR/page/animation \
     $$SOURCE_DIR/page/qt \
     $$SOURCE_DIR/page/scrolling \
+    $$SOURCE_DIR/page/scrolling/coordinatedgraphics \
     $$SOURCE_DIR/platform \
     $$SOURCE_DIR/platform/animation \
     $$SOURCE_DIR/platform/audio \
@@ -63,6 +64,7 @@
     $$SOURCE_DIR/platform/graphics/qt \
     $$SOURCE_DIR/platform/graphics/surfaces \
     $$SOURCE_DIR/platform/graphics/texmap \
+    $$SOURCE_DIR/platform/graphics/texmap/coordinated \
     $$SOURCE_DIR/platform/graphics/transforms \
     $$SOURCE_DIR/platform/image-decoders \
     $$SOURCE_DIR/platform/image-decoders/bmp \

Modified: trunk/Source/WebCore/page/scrolling/ScrollingCoordinator.cpp (142111 => 142112)


--- trunk/Source/WebCore/page/scrolling/ScrollingCoordinator.cpp	2013-02-07 14:42:20 UTC (rev 142111)
+++ trunk/Source/WebCore/page/scrolling/ScrollingCoordinator.cpp	2013-02-07 14:47:50 UTC (rev 142112)
@@ -52,6 +52,10 @@
 #include "ScrollingCoordinatorChromium.h"
 #endif
 
+#if USE(COORDINATED_GRAPHICS)
+#include "ScrollingCoordinatorCoordinatedGraphics.h"
+#endif
+
 namespace WebCore {
 
 PassRefPtr<ScrollingCoordinator> ScrollingCoordinator::create(Page* page)
@@ -64,6 +68,10 @@
     return adoptRef(new ScrollingCoordinatorChromium(page));
 #endif
 
+#if USE(COORDINATED_GRAPHICS)
+    return adoptRef(new ScrollingCoordinatorCoordinatedGraphics(page));
+#endif
+
     return adoptRef(new ScrollingCoordinator(page));
 }
 

Added: trunk/Source/WebCore/page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.cpp (0 => 142112)


--- trunk/Source/WebCore/page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.cpp	                        (rev 0)
+++ trunk/Source/WebCore/page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.cpp	2013-02-07 14:47:50 UTC (rev 142112)
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2013 Nokia Corporation and/or its subsidiary(-ies).
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+
+#if USE(COORDINATED_GRAPHICS)
+
+#include "ScrollingCoordinatorCoordinatedGraphics.h"
+
+#include "CoordinatedGraphicsLayer.h"
+#include "Page.h"
+#include "Settings.h"
+
+namespace WebCore {
+
+ScrollingCoordinatorCoordinatedGraphics::ScrollingCoordinatorCoordinatedGraphics(Page* page)
+    : ScrollingCoordinator(page)
+{
+}
+
+void ScrollingCoordinatorCoordinatedGraphics::setLayerIsFixedToContainerLayer(GraphicsLayer* layer, bool enable)
+{
+    if (!m_page->settings()->acceleratedCompositingForFixedPositionEnabled())
+        return;
+    toCoordinatedGraphicsLayer(layer)->setFixedToViewport(enable);
+}
+
+} // namespace WebCore
+
+#endif // USE(COORDINATED_GRAPHICS)

Added: trunk/Source/WebCore/page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.h (0 => 142112)


--- trunk/Source/WebCore/page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.h	                        (rev 0)
+++ trunk/Source/WebCore/page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.h	2013-02-07 14:47:50 UTC (rev 142112)
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2013 Nokia Corporation and/or its subsidiary(-ies).
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef ScrollingCoordinatorCoordinatedGraphics_h
+#define ScrollingCoordinatorCoordinatedGraphics_h
+
+#if USE(COORDINATED_GRAPHICS)
+
+#include "ScrollingCoordinator.h"
+
+namespace WebCore {
+
+class ScrollingCoordinatorCoordinatedGraphics : public ScrollingCoordinator {
+public:
+    explicit ScrollingCoordinatorCoordinatedGraphics(Page*);
+
+    virtual void setLayerIsFixedToContainerLayer(GraphicsLayer*, bool);
+};
+
+} // namespace WebCore
+
+#endif // USE(COORDINATED_GRAPHICS)
+
+#endif

Modified: trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp (142111 => 142112)


--- trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp	2013-02-07 14:42:20 UTC (rev 142111)
+++ trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp	2013-02-07 14:47:50 UTC (rev 142112)
@@ -464,6 +464,15 @@
     return m_id;
 }
 
+void CoordinatedGraphicsLayer::setFixedToViewport(bool isFixed)
+{
+    if (m_fixedToViewport == isFixed)
+        return;
+
+    m_fixedToViewport = isFixed;
+    didChangeLayerState();
+}
+
 void CoordinatedGraphicsLayer::flushCompositingState(const FloatRect& rect)
 {
     if (!m_coordinator->isFlushingLayerChanges()) {
@@ -478,8 +487,6 @@
     if (CoordinatedGraphicsLayer* replica = toCoordinatedGraphicsLayer(replicaLayer()))
         replica->flushCompositingStateForThisLayerOnly();
 
-    m_coordinator->syncFixedLayers();
-
     flushCompositingStateForThisLayerOnly();
 
     for (size_t i = 0; i < children().size(); ++i)

Modified: trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h (142111 => 142112)


--- trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h	2013-02-07 14:42:20 UTC (rev 142111)
+++ trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h	2013-02-07 14:47:50 UTC (rev 142112)
@@ -72,7 +72,6 @@
     virtual void setLayerAnimations(CoordinatedLayerID, const GraphicsLayerAnimations&) = 0;
 
     virtual void detachLayer(CoordinatedGraphicsLayer*) = 0;
-    virtual void syncFixedLayers() = 0;
     virtual PassOwnPtr<GraphicsContext> beginContentUpdate(const IntSize&, CoordinatedSurface::Flags, uint32_t& atlasID, IntPoint&) = 0;
 };
 
@@ -137,7 +136,7 @@
 
     CoordinatedLayerID id() const;
 
-    void setFixedToViewport(bool isFixed) { m_fixedToViewport = isFixed; }
+    void setFixedToViewport(bool isFixed);
 
     IntRect coverRect() const { return m_mainBackingStore ? m_mainBackingStore->mapToContents(m_mainBackingStore->coverRect()) : IntRect(); }
 

Modified: trunk/Source/WebKit2/ChangeLog (142111 => 142112)


--- trunk/Source/WebKit2/ChangeLog	2013-02-07 14:42:20 UTC (rev 142111)
+++ trunk/Source/WebKit2/ChangeLog	2013-02-07 14:47:50 UTC (rev 142112)
@@ -1,3 +1,22 @@
+2013-02-07  Caio Marcelo de Oliveira Filho  <[email protected]>
+
+        [CoordinatedGraphics] Use ScrollingCoordinator to track fixed layers
+        https://bugs.webkit.org/show_bug.cgi?id=108990
+
+        Reviewed by Noam Rosenthal.
+        Signed off for WebKit2 by Simon Fraser.
+
+        WebCore keeps ScrollingCoordinator up-to-date about whether layers are fixed or not, so we
+        don't need to traverse the tree every frame to get this information.
+
+        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp: remove
+        syncFixedLayers() and its helper functions. Those were used to identify the fixed layers
+        and are not needed anymore.
+        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:
+        * WebProcess/WebPage/DrawingAreaImpl.cpp:
+        (WebKit::DrawingAreaImpl::DrawingAreaImpl): enable the scrolling coordinator usage for
+        Coordinated Graphics.
+
 2013-02-07  Michael BrĂ¼ning  <[email protected]>
 
         [Qt][WK2] Fold QtWebPageLoadClient into QQuickWebViewPrivate and move to C API.

Modified: trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp (142111 => 142112)


--- trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp	2013-02-07 14:42:20 UTC (rev 142111)
+++ trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp	2013-02-07 14:47:50 UTC (rev 142112)
@@ -469,54 +469,6 @@
     scheduleLayerFlush();
 }
 
-static void updateOffsetFromViewportForSelf(RenderLayer* renderLayer)
-{
-    // These conditions must match the conditions in RenderLayerCompositor::requiresCompositingForPosition.
-    RenderLayerBacking* backing = renderLayer->backing();
-    if (!backing)
-        return;
-
-    RenderStyle* style = renderLayer->renderer()->style();
-    if (!style)
-        return;
-
-    if (!renderLayer->renderer()->isOutOfFlowPositioned() || renderLayer->renderer()->style()->position() != FixedPosition)
-        return;
-
-    if (!renderLayer->renderer()->container()->isRenderView())
-        return;
-
-    if (!renderLayer->isStackingContainer())
-        return;
-
-    CoordinatedGraphicsLayer* graphicsLayer = toCoordinatedGraphicsLayer(backing->graphicsLayer());
-    graphicsLayer->setFixedToViewport(true);
-}
-
-static void updateOffsetFromViewportForLayer(RenderLayer* renderLayer)
-{
-    updateOffsetFromViewportForSelf(renderLayer);
-
-    if (renderLayer->firstChild())
-        updateOffsetFromViewportForLayer(renderLayer->firstChild());
-    if (renderLayer->nextSibling())
-        updateOffsetFromViewportForLayer(renderLayer->nextSibling());
-}
-
-void CoordinatedLayerTreeHost::syncFixedLayers()
-{
-    if (!m_webPage->corePage()->settings() || !m_webPage->corePage()->settings()->acceleratedCompositingForFixedPositionEnabled())
-        return;
-
-    if (!m_webPage->mainFrame()->view()->hasViewportConstrainedObjects())
-        return;
-
-    RenderLayer* rootRenderLayer = m_webPage->mainFrame()->contentRenderer()->compositor()->rootRenderLayer();
-    ASSERT(rootRenderLayer);
-    if (rootRenderLayer->firstChild())
-        updateOffsetFromViewportForLayer(rootRenderLayer->firstChild());
-}
-
 void CoordinatedLayerTreeHost::lockAnimations()
 {
     m_animationsLocked = true;

Modified: trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h (142111 => 142112)


--- trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h	2013-02-07 14:42:20 UTC (rev 142111)
+++ trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h	2013-02-07 14:47:50 UTC (rev 142112)
@@ -105,7 +105,6 @@
 #endif
     virtual void setLayerRepaintCount(WebCore::CoordinatedLayerID, int) OVERRIDE;
     virtual void detachLayer(WebCore::CoordinatedGraphicsLayer*);
-    virtual void syncFixedLayers();
 
     virtual PassOwnPtr<WebCore::GraphicsContext> beginContentUpdate(const WebCore::IntSize&, WebCore::CoordinatedSurface::Flags, uint32_t& atlasID, WebCore::IntPoint&);
 

Modified: trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp (142111 => 142112)


--- trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp	2013-02-07 14:42:20 UTC (rev 142111)
+++ trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp	2013-02-07 14:47:50 UTC (rev 142112)
@@ -73,6 +73,7 @@
 
 #if USE(COORDINATED_GRAPHICS)
     m_alwaysUseCompositing = true;
+    webPage->corePage()->settings()->setScrollingCoordinatorEnabled(true);
 #endif
 
     if (m_alwaysUseCompositing)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to