Changeset 294902 in webkit for trunk/Source/WebCore/rendering/RenderObject.cpp
- Timestamp:
- May 26, 2022, 3:22:08 PM (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/rendering/RenderObject.cpp
r294699 r294902 861 861 { 862 862 RenderLayerModelObject* repaintContainer = nullptr; 863 auto fullRepaintAlreadyScheduled = false; 863 864 864 865 if (view().usesCompositing()) { 865 if (RenderLayer* parentLayer = enclosingLayer()) { 866 RenderLayer* compLayer = parentLayer->enclosingCompositingLayerForRepaint(); 867 if (compLayer) 868 repaintContainer = &compLayer->renderer(); 866 if (auto* parentLayer = enclosingLayer()) { 867 auto compLayerStatus = parentLayer->enclosingCompositingLayerForRepaint(); 868 if (compLayerStatus.layer) { 869 repaintContainer = &compLayerStatus.layer->renderer(); 870 fullRepaintAlreadyScheduled = compLayerStatus.fullRepaintAlreadyScheduled; 871 } 869 872 } 870 873 } 871 874 if (view().hasSoftwareFilters()) { 872 if (RenderLayer* parentLayer = enclosingLayer()) { 873 RenderLayer* enclosingFilterLayer = parentLayer->enclosingFilterLayer(); 874 if (enclosingFilterLayer) 875 return { false, &enclosingFilterLayer->renderer() }; 875 if (auto* parentLayer = enclosingLayer()) { 876 auto* enclosingFilterLayer = parentLayer->enclosingFilterLayer(); 877 if (enclosingFilterLayer) { 878 fullRepaintAlreadyScheduled = parentLayer->needsFullRepaint(); 879 return { fullRepaintAlreadyScheduled, &enclosingFilterLayer->renderer() }; 880 } 876 881 } 877 882 } … … 888 893 repaintContainer = parentRenderFragmentedFlow; 889 894 } 890 return { f alse, repaintContainer };895 return { fullRepaintAlreadyScheduled, repaintContainer }; 891 896 } 892 897 … … 962 967 } 963 968 969 static inline bool fullRepaintIsScheduled(const RenderObject& renderer) 970 { 971 if (!renderer.view().usesCompositing() && !renderer.document().ownerElement()) 972 return false; 973 for (auto* ancestorLayer = renderer.enclosingLayer(); ancestorLayer; ancestorLayer = ancestorLayer->paintOrderParent()) { 974 if (ancestorLayer->needsFullRepaint()) 975 return true; 976 } 977 return false; 978 } 979 964 980 void RenderObject::repaint() const 965 981 { … … 973 989 974 990 auto repaintContainer = containerForRepaint(); 991 if (!repaintContainer.renderer) 992 repaintContainer = { fullRepaintIsScheduled(*this), &view }; 993 975 994 if (!repaintContainer.fullRepaintIsScheduled) 976 995 repaintUsingContainer(repaintContainer.renderer, clippedOverflowRectForRepaint(repaintContainer.renderer)); … … 993 1012 994 1013 auto repaintContainer = containerForRepaint(); 1014 if (!repaintContainer.renderer) 1015 repaintContainer = { fullRepaintIsScheduled(*this), &view }; 1016 995 1017 if (!repaintContainer.fullRepaintIsScheduled) 996 1018 repaintUsingContainer(repaintContainer.renderer, computeRectForRepaint(dirtyRect, repaintContainer.renderer), shouldClipToLayer);
Note:
See TracChangeset
for help on using the changeset viewer.