Changeset 241860 in webkit
- Timestamp:
- Feb 20, 2019 7:32:50 PM (5 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r241852 r241860 1 2019-02-20 Simon Fraser <simon.fraser@apple.com> 2 3 REGRESSION (240698): Fixed position banners flicker and move when scrolling on iOS 4 https://bugs.webkit.org/show_bug.cgi?id=194889 5 rdar://problem/47755552 6 7 Reviewed by Tim Horton. 8 9 After r240698 we could commit scrolling changes for a fixed node where the "viewportRectAtLastLayout" and the layer 10 position were mismatched; this happened when AsyncScrollingCoordinator::reconcileScrollingState() came back from the UI process 11 with an unstable update and set a new layoutViewport, then some other layout triggered a compositing tree update. During the tree 12 update, we'd update the fixed scrolling node with the new viewport, and an old layer position. 13 14 Fix by ensuring that we only update the geometry info for a scrolling tree node when we update layer geometry for the corresponding 15 layer. 16 17 Not currently testable. 18 19 * rendering/RenderLayerCompositor.cpp: 20 (WebCore::RenderLayerCompositor::updateBackingAndHierarchy): 21 1 22 2019-02-20 Dean Jackson <dino@apple.com> 2 23 -
trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp
r241830 r241860 1170 1170 } 1171 1171 1172 if (layerNeedsUpdate || layer.needsCompositingGeometryUpdate() || layer.needsScrollingTreeUpdate()) 1172 OptionSet<ScrollingNodeChangeFlags> scrollingNodeChanges = { ScrollingNodeChangeFlags::Layer }; 1173 if (layerNeedsUpdate || layer.needsCompositingGeometryUpdate() || layer.needsScrollingTreeUpdate()) { 1173 1174 layerBacking->updateGeometry(); 1175 scrollingNodeChanges.add(ScrollingNodeChangeFlags::LayerGeometry); 1176 } 1174 1177 1175 1178 if (auto* reflection = layer.reflectionLayer()) { … … 1186 1189 // FIXME: do based on dirty flags. Need to do this for changes of geometry, configuration and hierarchy. 1187 1190 // Need to be careful to do the right thing when a scroll-coordinated layer loses a scroll-coordinated ancestor. 1188 stateForDescendants.parentNodeID = updateScrollCoordinationForLayer(layer, scrollingTreeState, layerBacking->coordinatedScrollingRoles(), { ScrollingNodeChangeFlags::Layer, ScrollingNodeChangeFlags::LayerGeometry });1191 stateForDescendants.parentNodeID = updateScrollCoordinationForLayer(layer, scrollingTreeState, layerBacking->coordinatedScrollingRoles(), scrollingNodeChanges); 1189 1192 stateForDescendants.nextChildIndex = 0; 1190 1193
Note: See TracChangeset
for help on using the changeset viewer.