Title: [124489] trunk/Source/WebCore
Revision
124489
Author
[email protected]
Date
2012-08-02 13:30:15 -0700 (Thu, 02 Aug 2012)

Log Message

https://bugs.webkit.org/show_bug.cgi?id=93020
REGRESSION (tiled scrolling): Full-screen video is broken if page is 
scrolled
-and corresponding-
<rdar://problem/11629778>

Reviewed by Anders Carlsson.

The bug here is that ScrollingTreeNodeMac::setScrollLayerPosition() 
uses the CALayer (PlatformLayer) directly to set the position. That 
means that the GraphicsLayer that owns that PlatformLayer does not 
have updated position information. That results in this bug when we 
switch from fast scrolling to main thread scrolling, because at that 
point, the GraphicsLayer needs to have the correct information. So 
make sure to update the main thread scroll position and layer 
position before transitioning to main thread scrolling.
* page/scrolling/ScrollingCoordinator.cpp:
(WebCore::ScrollingCoordinator::setShouldUpdateScrollLayerPositionOnMainThread):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (124488 => 124489)


--- trunk/Source/WebCore/ChangeLog	2012-08-02 20:23:16 UTC (rev 124488)
+++ trunk/Source/WebCore/ChangeLog	2012-08-02 20:30:15 UTC (rev 124489)
@@ -1,3 +1,24 @@
+2012-08-02  Beth Dakin  <[email protected]>
+
+        https://bugs.webkit.org/show_bug.cgi?id=93020
+        REGRESSION (tiled scrolling): Full-screen video is broken if page is 
+        scrolled
+        -and corresponding-
+        <rdar://problem/11629778>
+
+        Reviewed by Anders Carlsson.
+
+        The bug here is that ScrollingTreeNodeMac::setScrollLayerPosition() 
+        uses the CALayer (PlatformLayer) directly to set the position. That 
+        means that the GraphicsLayer that owns that PlatformLayer does not 
+        have updated position information. That results in this bug when we 
+        switch from fast scrolling to main thread scrolling, because at that 
+        point, the GraphicsLayer needs to have the correct information. So 
+        make sure to update the main thread scroll position and layer 
+        position before transitioning to main thread scrolling.
+        * page/scrolling/ScrollingCoordinator.cpp:
+        (WebCore::ScrollingCoordinator::setShouldUpdateScrollLayerPositionOnMainThread):
+
 2012-08-02  Addy Osmani  <[email protected]>
 
         Web Inspector: Rename 'User agent' to 'Overrides' in settings screen

Modified: trunk/Source/WebCore/page/scrolling/ScrollingCoordinator.cpp (124488 => 124489)


--- trunk/Source/WebCore/page/scrolling/ScrollingCoordinator.cpp	2012-08-02 20:23:16 UTC (rev 124488)
+++ trunk/Source/WebCore/page/scrolling/ScrollingCoordinator.cpp	2012-08-02 20:30:15 UTC (rev 124489)
@@ -415,6 +415,11 @@
 
 void ScrollingCoordinator::setShouldUpdateScrollLayerPositionOnMainThread(bool shouldUpdateScrollLayerPositionOnMainThread)
 {
+    // The FrameView's GraphicsLayer is likely to be out-of-synch with the PlatformLayer
+    // at this point. So we'll update it before we switch back to main thread scrolling
+    // in order to avoid layer positioning bugs.
+    if (shouldUpdateScrollLayerPositionOnMainThread)
+        updateMainFrameScrollPositionAndScrollLayerPosition();
     m_scrollingTreeState->setShouldUpdateScrollLayerPositionOnMainThread(shouldUpdateScrollLayerPositionOnMainThread);
     scheduleTreeStateCommit();
 }
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to