summaryrefslogtreecommitdiffstats
path: root/layout/painting/nsDisplayList.cpp
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 01:14:29 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 01:14:29 +0000
commitfbaf0bb26397aa498eb9156f06d5a6fe34dd7dd8 (patch)
tree4c1ccaf5486d4f2009f9a338a98a83e886e29c97 /layout/painting/nsDisplayList.cpp
parentReleasing progress-linux version 124.0.1-1~progress7.99u1. (diff)
downloadfirefox-fbaf0bb26397aa498eb9156f06d5a6fe34dd7dd8.tar.xz
firefox-fbaf0bb26397aa498eb9156f06d5a6fe34dd7dd8.zip
Merging upstream version 125.0.1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'layout/painting/nsDisplayList.cpp')
-rw-r--r--layout/painting/nsDisplayList.cpp31
1 files changed, 21 insertions, 10 deletions
diff --git a/layout/painting/nsDisplayList.cpp b/layout/painting/nsDisplayList.cpp
index 46f8b05f82..78388d2185 100644
--- a/layout/painting/nsDisplayList.cpp
+++ b/layout/painting/nsDisplayList.cpp
@@ -868,6 +868,11 @@ void nsDisplayListBuilder::SetIsRelativeToLayoutViewport() {
UpdateShouldBuildAsyncZoomContainer();
}
+void nsDisplayListBuilder::ForceLayerForScrollParent() {
+ mForceLayerForScrollParent = true;
+ mNumActiveScrollframesEncountered++;
+}
+
void nsDisplayListBuilder::UpdateShouldBuildAsyncZoomContainer() {
const Document* document = mReferenceFrame->PresContext()->Document();
mBuildAsyncZoomContainer = !mIsRelativeToLayoutViewport &&
@@ -5974,7 +5979,8 @@ nsDisplayTransform::nsDisplayTransform(nsDisplayListBuilder* aBuilder,
mPrerenderDecision(PrerenderDecision::No),
mIsTransformSeparator(true),
mHasTransformGetter(false),
- mHasAssociatedPerspective(false) {
+ mHasAssociatedPerspective(false),
+ mContainsASRs(false) {
MOZ_COUNT_CTOR(nsDisplayTransform);
MOZ_ASSERT(aFrame, "Must have a frame!");
Init(aBuilder, aList);
@@ -5990,7 +5996,8 @@ nsDisplayTransform::nsDisplayTransform(nsDisplayListBuilder* aBuilder,
mPrerenderDecision(aPrerenderDecision),
mIsTransformSeparator(false),
mHasTransformGetter(false),
- mHasAssociatedPerspective(false) {
+ mHasAssociatedPerspective(false),
+ mContainsASRs(false) {
MOZ_COUNT_CTOR(nsDisplayTransform);
MOZ_ASSERT(aFrame, "Must have a frame!");
SetReferenceFrameToAncestor(aBuilder);
@@ -6007,7 +6014,8 @@ nsDisplayTransform::nsDisplayTransform(nsDisplayListBuilder* aBuilder,
mPrerenderDecision(PrerenderDecision::No),
mIsTransformSeparator(false),
mHasTransformGetter(true),
- mHasAssociatedPerspective(false) {
+ mHasAssociatedPerspective(false),
+ mContainsASRs(false) {
MOZ_COUNT_CTOR(nsDisplayTransform);
MOZ_ASSERT(aFrame, "Must have a frame!");
MOZ_ASSERT(aFrame->GetTransformGetter());
@@ -6194,6 +6202,9 @@ Matrix4x4 nsDisplayTransform::GetResultingTransformMatrixInternal(
NS_ASSERTION(frame || !(aFlags & INCLUDE_PERSPECTIVE),
"Must have a frame to compute perspective!");
+ // IncrementScaleRestyleCountIfNeeded in ActiveLayerTracker.cpp is a
+ // simplified copy of this function.
+
// Get the underlying transform matrix:
/* Get the matrix, then change its basis to factor in the origin. */
@@ -6637,12 +6648,12 @@ bool nsDisplayTransform::CreateWebRenderCommands(
key};
nsDisplayTransform* deferredTransformItem = nullptr;
- if (!mFrame->ChildrenHavePerspective()) {
+ if (ShouldDeferTransform()) {
// If it has perspective, we create a new scroll data via the
- // UpdateScrollData call because that scenario is more complex. Otherwise
- // we can just stash the transform on the StackingContextHelper and
- // apply it to any scroll data that are created inside this
- // nsDisplayTransform.
+ // UpdateScrollData call because that scenario is more complex. Otherwise,
+ // if we don't contain any ASRs then just stash the transform on the
+ // StackingContextHelper and apply it to any scroll data that are created
+ // inside this nsDisplayTransform.
deferredTransformItem = this;
}
@@ -6693,14 +6704,14 @@ bool nsDisplayTransform::CreateWebRenderCommands(
bool nsDisplayTransform::UpdateScrollData(
WebRenderScrollData* aData, WebRenderLayerScrollData* aLayerData) {
- if (!mFrame->ChildrenHavePerspective()) {
+ if (ShouldDeferTransform()) {
// This case is handled in CreateWebRenderCommands by stashing the transform
// on the stacking context.
return false;
}
if (aLayerData) {
aLayerData->SetTransform(GetTransform().GetMatrix());
- aLayerData->SetTransformIsPerspective(true);
+ aLayerData->SetTransformIsPerspective(mFrame->ChildrenHavePerspective());
}
return true;
}