Skip to content

Commit

Permalink
Bug 876092. Copy the DisplayItemClip into OutOfFlowDisplayData instea…
Browse files Browse the repository at this point in the history
…d of storing a pointer. r=mats

--HG--
extra : rebase_source : d941179d66854ab98b9f0aba40d33b534e69378e
  • Loading branch information
rocallahan committed Jun 17, 2013
1 parent df146b4 commit e07af40
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 5 deletions.
6 changes: 4 additions & 2 deletions layout/base/nsDisplayList.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -598,8 +598,10 @@ void nsDisplayListBuilder::MarkOutOfFlowFrameForDisplay(nsIFrame* aDirtyFrame,

if (!dirty.IntersectRect(dirty, overflowRect))
return;
aFrame->Properties().Set(nsDisplayListBuilder::OutOfFlowDisplayDataProperty(),
new OutOfFlowDisplayData(mClipState.GetClipForContainingBlockDescendants(), dirty));
const DisplayItemClip* clip = mClipState.GetClipForContainingBlockDescendants();
OutOfFlowDisplayData* data = clip ? new OutOfFlowDisplayData(*clip, dirty)
: new OutOfFlowDisplayData(dirty);
aFrame->Properties().Set(nsDisplayListBuilder::OutOfFlowDisplayDataProperty(), data);

MarkFrameForDisplay(aFrame, aDirtyFrame);
}
Expand Down
7 changes: 5 additions & 2 deletions layout/base/nsDisplayList.h
Original file line number Diff line number Diff line change
Expand Up @@ -566,12 +566,15 @@ class nsDisplayListBuilder {
void SetCurrentTableItem(nsDisplayTableItem* aTableItem) { mCurrentTableItem = aTableItem; }

struct OutOfFlowDisplayData {
OutOfFlowDisplayData(const DisplayItemClip* aContainingBlockClip,
OutOfFlowDisplayData(const DisplayItemClip& aContainingBlockClip,
const nsRect &aDirtyRect)
: mContainingBlockClip(aContainingBlockClip)
, mDirtyRect(aDirtyRect)
{}
const DisplayItemClip* mContainingBlockClip;
OutOfFlowDisplayData(const nsRect &aDirtyRect)
: mDirtyRect(aDirtyRect)
{}
DisplayItemClip mContainingBlockClip;
nsRect mDirtyRect;
};
static void DestroyOutOfFlowDisplayData(void* aPropertyValue)
Expand Down
2 changes: 1 addition & 1 deletion layout/generic/nsFrame.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2107,7 +2107,7 @@ nsIFrame::BuildDisplayListForChild(nsDisplayListBuilder* aBuilder,

if (savedOutOfFlowData) {
clipState.SetClipForContainingBlockDescendants(
savedOutOfFlowData->mContainingBlockClip);
&savedOutOfFlowData->mContainingBlockClip);
}

// Setup clipping for the parent's overflow:-moz-hidden-unscrollable,
Expand Down

0 comments on commit e07af40

Please sign in to comment.