[SCM] WebKit Debian packaging branch, webkit-1.3, updated. upstream/1.3.7-4207-g178b198

enne at google.com enne at google.com
Sun Feb 20 23:37:36 UTC 2011


The following commit has been merged in the webkit-1.3 branch:
commit 54952b5b2de1c05a6f661ef8cc4d46c38c9437e2
Author: enne at google.com <enne at google.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Sat Jan 22 10:00:13 2011 +0000

    2011-01-22  Adrienne Walker  <enne at google.com>
    
            Reviewed by James Robinson.
    
            [chromium] Fix compositor repaints for offscreen fixed elements
            https://bugs.webkit.org/show_bug.cgi?id=52681
    
            The fast path scrolling was clipping offscreen invalidations.
            Additionally, the compositor was ignoring all invalidations that were
            entirely out of the content rect.
    
            Test: compositing/ to verify this caused no regressions.
            Tested fix manually in browser as I could not generate a LayoutTest that reproduced the bug in run-webkit-tests.
    
            * page/FrameView.cpp:
            (WebCore::FrameView::scrollContentsFastPath):
            * platform/graphics/chromium/LayerRendererChromium.cpp:
            (WebCore::LayerRendererChromium::invalidateRootLayerRect):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@76437 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 4c7673e..5c512cd 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,22 @@
+2011-01-22  Adrienne Walker  <enne at google.com>
+
+        Reviewed by James Robinson.
+
+        [chromium] Fix compositor repaints for offscreen fixed elements
+        https://bugs.webkit.org/show_bug.cgi?id=52681
+
+        The fast path scrolling was clipping offscreen invalidations.
+        Additionally, the compositor was ignoring all invalidations that were
+        entirely out of the content rect.
+
+        Test: compositing/ to verify this caused no regressions.
+        Tested fix manually in browser as I could not generate a LayoutTest that reproduced the bug in run-webkit-tests.
+
+        * page/FrameView.cpp:
+        (WebCore::FrameView::scrollContentsFastPath):
+        * platform/graphics/chromium/LayerRendererChromium.cpp:
+        (WebCore::LayerRendererChromium::invalidateRootLayerRect):
+
 2011-01-22  Alexey Proskuryakov  <ap at apple.com>
 
         Reviewed by Dan Bernstein.
diff --git a/Source/WebCore/page/FrameView.cpp b/Source/WebCore/page/FrameView.cpp
index 6cea443..2a66698 100644
--- a/Source/WebCore/page/FrameView.cpp
+++ b/Source/WebCore/page/FrameView.cpp
@@ -1097,8 +1097,8 @@ bool FrameView::scrollContentsFastPath(const IntSize& scrollDelta, const IntRect
             continue;
         IntRect updateRect = renderBox->layer()->repaintRectIncludingDescendants();
         updateRect = contentsToWindow(updateRect);
-
-        updateRect.intersect(rectToScroll);
+        if (clipsRepaints())
+            updateRect.intersect(rectToScroll);
         if (!updateRect.isEmpty()) {
             if (subRectToUpdate.size() >= fixedObjectThreshold) {
                 updateInvalidatedSubRect = false;
@@ -1120,7 +1120,8 @@ bool FrameView::scrollContentsFastPath(const IntSize& scrollDelta, const IntRect
             IntRect scrolledRect = updateRect;
             scrolledRect.move(scrollDelta);
             updateRect.unite(scrolledRect);
-            updateRect.intersect(rectToScroll);
+            if (clipsRepaints())
+                updateRect.intersect(rectToScroll);
             hostWindow()->invalidateContentsAndWindow(updateRect, false);
         }
         return true;
diff --git a/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp b/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp
index 90eac74..9b47635 100644
--- a/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp
+++ b/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp
@@ -155,8 +155,7 @@ IntRect LayerRendererChromium::horizontalScrollbarRect(const IntRect& visibleRec
 
 void LayerRendererChromium::invalidateRootLayerRect(const IntRect& dirtyRect, const IntRect& visibleRect, const IntRect& contentRect)
 {
-    if (contentRect.intersects(dirtyRect))
-        m_rootLayerTiler->invalidateRect(dirtyRect);
+    m_rootLayerTiler->invalidateRect(dirtyRect);
     if (m_horizontalScrollbarTiler) {
         IntRect scrollbar = horizontalScrollbarRect(visibleRect, contentRect);
         if (dirtyRect.intersects(scrollbar)) {

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list