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