Skip to content

Commit 4a75d5f

Browse files
committedMay 5, 2020
Bug 1626570 - Improve handling of copying arrays in layout/painting/. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D72352
1 parent aa90651 commit 4a75d5f

5 files changed

+10
-8
lines changed
 

‎layout/painting/DisplayItemClip.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ class DisplayItemClip {
182182

183183
private:
184184
nsRect mClipRect;
185-
nsTArray<RoundedRect> mRoundedClipRects;
185+
CopyableTArray<RoundedRect> mRoundedClipRects;
186186
// If mHaveClipRect is false then this object represents no clipping at all
187187
// and mRoundedClipRects must be empty.
188188
bool mHaveClipRect;

‎layout/painting/FrameLayerBuilder.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ void DisplayItemData::BeginUpdate(Layer* aLayer, LayerState aState,
333333

334334
// We avoid adding or removing element unnecessarily
335335
// since we have to modify userdata each time
336-
AutoTArray<nsIFrame*, 4> copy(mFrameList);
336+
CopyableAutoTArray<nsIFrame*, 4> copy(mFrameList);
337337
if (!copy.RemoveElement(aItem->Frame())) {
338338
AddFrame(aItem->Frame());
339339
mChangedFrameInvalidations.Or(mChangedFrameInvalidations,
@@ -5740,7 +5740,7 @@ void ContainerState::SetupScrollingMetadata(NewLayerEntry* aEntry) {
57405740
// so add to it rather than overwriting it (we clear the list when recycling
57415741
// a layer).
57425742
nsTArray<RefPtr<Layer>> maskLayers(
5743-
aEntry->mLayer->GetAllAncestorMaskLayers());
5743+
aEntry->mLayer->GetAllAncestorMaskLayers().Clone());
57445744

57455745
// Iterate over the ASR chain and create the corresponding scroll metadatas.
57465746
// This loop is slightly tricky because the scrollframe-to-clip relationship

‎layout/painting/MaskLayerImageCache.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ MaskLayerImageCache::MaskLayerImageKey::MaskLayerImageKey()
5252

5353
MaskLayerImageCache::MaskLayerImageKey::MaskLayerImageKey(
5454
const MaskLayerImageKey& aKey)
55-
: mRoundedClipRects(aKey.mRoundedClipRects), mLayerCount(aKey.mLayerCount) {
55+
: mRoundedClipRects(aKey.mRoundedClipRects.Clone()),
56+
mLayerCount(aKey.mLayerCount) {
5657
MOZ_COUNT_CTOR(MaskLayerImageKey);
5758
}
5859

‎layout/painting/nsDisplayList.h

+4-3
Original file line numberDiff line numberDiff line change
@@ -5383,7 +5383,7 @@ class nsDisplayWrapList : public nsDisplayHitTestInfoBase {
53835383
: nsDisplayHitTestInfoBase(aBuilder, aOther),
53845384
mListPtr(&mList),
53855385
mFrameActiveScrolledRoot(aOther.mFrameActiveScrolledRoot),
5386-
mMergedFrames(aOther.mMergedFrames),
5386+
mMergedFrames(aOther.mMergedFrames.Clone()),
53875387
mBounds(aOther.mBounds),
53885388
mBaseBuildingRect(aOther.mBaseBuildingRect),
53895389
mOverrideZIndex(aOther.mOverrideZIndex),
@@ -5567,7 +5567,7 @@ class nsDisplayWrapList : public nsDisplayHitTestInfoBase {
55675567
buildingRect.UnionRect(GetBuildingRect(), aOther->GetBuildingRect());
55685568
SetBuildingRect(buildingRect);
55695569
mMergedFrames.AppendElement(aOther->mFrame);
5570-
mMergedFrames.AppendElements(aOther->mMergedFrames);
5570+
mMergedFrames.AppendElements(aOther->mMergedFrames.Clone());
55715571
}
55725572

55735573
RetainedDisplayList mList;
@@ -6598,7 +6598,8 @@ class nsDisplayMasksAndClipPaths : public nsDisplayEffectsBase {
65986598
const ActiveScrolledRoot* aActiveScrolledRoot);
65996599
nsDisplayMasksAndClipPaths(nsDisplayListBuilder* aBuilder,
66006600
const nsDisplayMasksAndClipPaths& aOther)
6601-
: nsDisplayEffectsBase(aBuilder, aOther), mDestRects(aOther.mDestRects) {
6601+
: nsDisplayEffectsBase(aBuilder, aOther),
6602+
mDestRects(aOther.mDestRects.Clone()) {
66026603
MOZ_COUNT_CTOR(nsDisplayMasksAndClipPaths);
66036604
}
66046605

‎layout/painting/nsDisplayListInvalidation.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ nsDisplayMasksAndClipPathsGeometry::nsDisplayMasksAndClipPathsGeometry(
107107
nsDisplayMasksAndClipPaths* aItem, nsDisplayListBuilder* aBuilder)
108108
: nsDisplaySVGEffectGeometry(aItem, aBuilder),
109109
nsImageGeometryMixin(aItem, aBuilder),
110-
mDestRects(aItem->GetDestRects()) {}
110+
mDestRects(aItem->GetDestRects().Clone()) {}
111111

112112
nsDisplayFiltersGeometry::nsDisplayFiltersGeometry(
113113
nsDisplayFilters* aItem, nsDisplayListBuilder* aBuilder)

0 commit comments

Comments
 (0)
Failed to load comments.