mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-10 20:05:49 +00:00
Bug 770058. InvalidateFrame doesn't need flags, we can just avoid calling ScheduleRepaint if we find any ancestor frame with a descendant that needs invalidation. r=mattwoodrow
This commit is contained in:
parent
2a29a59285
commit
030510fcb8
@ -4751,9 +4751,9 @@ nsIFrame::GetTransformMatrix(const nsIFrame* aStopAtAncestor,
|
||||
}
|
||||
|
||||
void
|
||||
nsIFrame::InvalidateFrameSubtree(uint32_t aFlags)
|
||||
nsIFrame::InvalidateFrameSubtree()
|
||||
{
|
||||
InvalidateFrame(aFlags);
|
||||
InvalidateFrame();
|
||||
|
||||
if (HasAnyStateBits(NS_FRAME_ALL_DESCENDANTS_NEED_PAINT)) {
|
||||
return;
|
||||
@ -4768,8 +4768,7 @@ nsIFrame::InvalidateFrameSubtree(uint32_t aFlags)
|
||||
for (; !lists.IsDone(); lists.Next()) {
|
||||
nsFrameList::Enumerator childFrames(lists.CurrentList());
|
||||
for (; !childFrames.AtEnd(); childFrames.Next()) {
|
||||
childFrames.get()->
|
||||
InvalidateFrameSubtree(aFlags | INVALIDATE_DONT_SCHEDULE_PAINT);
|
||||
childFrames.get()->InvalidateFrameSubtree();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -4796,7 +4795,7 @@ nsIFrame::ClearInvalidationStateBits()
|
||||
}
|
||||
|
||||
void
|
||||
nsIFrame::InvalidateFrame(uint32_t aFlags)
|
||||
nsIFrame::InvalidateFrame()
|
||||
{
|
||||
AddStateBits(NS_FRAME_NEEDS_PAINT);
|
||||
nsIFrame *parent = nsLayoutUtils::GetCrossDocParentFrame(this);
|
||||
@ -4804,7 +4803,7 @@ nsIFrame::InvalidateFrame(uint32_t aFlags)
|
||||
parent->AddStateBits(NS_FRAME_DESCENDANT_NEEDS_PAINT);
|
||||
parent = nsLayoutUtils::GetCrossDocParentFrame(parent);
|
||||
}
|
||||
if (!(aFlags & INVALIDATE_DONT_SCHEDULE_PAINT)) {
|
||||
if (!parent) {
|
||||
SchedulePaint();
|
||||
}
|
||||
}
|
||||
@ -8008,7 +8007,7 @@ nsFrame::SetParent(nsIFrame* aParent)
|
||||
// ourselves too. This is probably faster than clearing the flag all
|
||||
// the way up the frame tree.
|
||||
if (aParent->HasAnyStateBits(NS_FRAME_ALL_DESCENDANTS_NEED_PAINT)) {
|
||||
InvalidateFrame(INVALIDATE_DONT_SCHEDULE_PAINT);
|
||||
InvalidateFrame();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2173,17 +2173,12 @@ public:
|
||||
|
||||
/**
|
||||
* Marks all display items created by this frame as needing a repaint,
|
||||
* and calls SchedulePaint() if requested.
|
||||
* and calls SchedulePaint() if requested and one is not already pending.
|
||||
*
|
||||
* This includes all display items created by this frame, including
|
||||
* container types.
|
||||
* @param aFlags INVALIDATE_DONT_SCHEDULE_PAINT: Don't call SchedulePaint()
|
||||
* when invalidating.
|
||||
*/
|
||||
enum {
|
||||
INVALIDATE_DONT_SCHEDULE_PAINT
|
||||
};
|
||||
virtual void InvalidateFrame(uint32_t aFlags = 0);
|
||||
virtual void InvalidateFrame();
|
||||
|
||||
/**
|
||||
* Calls InvalidateFrame() on all frames descendant frames (including
|
||||
@ -2192,7 +2187,7 @@ public:
|
||||
* This function doesn't walk through placeholder frames to invalidate
|
||||
* the out-of-flow frames.
|
||||
*/
|
||||
void InvalidateFrameSubtree(uint32_t aFlags = 0);
|
||||
void InvalidateFrameSubtree();
|
||||
|
||||
/**
|
||||
* Checks if a frame has had InvalidateFrame() called on it since the
|
||||
|
@ -211,11 +211,11 @@ public:
|
||||
|
||||
virtual bool UpdateOverflow();
|
||||
|
||||
virtual void InvalidateFrame(uint32_t aFlags = 0)
|
||||
virtual void InvalidateFrame()
|
||||
{
|
||||
nsIFrame::InvalidateFrame(aFlags);
|
||||
nsIFrame::InvalidateFrame();
|
||||
nsTableFrame *tableFrame = nsTableFrame::GetTableFrame(this);
|
||||
tableFrame->InvalidateFrame(aFlags | INVALIDATE_DONT_SCHEDULE_PAINT);
|
||||
tableFrame->InvalidateFrame();
|
||||
}
|
||||
|
||||
protected:
|
||||
|
@ -191,10 +191,10 @@ nsTableColFrame::GetSplittableType() const
|
||||
}
|
||||
|
||||
void
|
||||
nsTableColFrame::InvalidateFrame(uint32_t aFlags)
|
||||
nsTableColFrame::InvalidateFrame()
|
||||
{
|
||||
nsIFrame::InvalidateFrame(aFlags);
|
||||
nsIFrame::InvalidateFrame();
|
||||
nsTableFrame *tableFrame = nsTableFrame::GetTableFrame(this);
|
||||
tableFrame->InvalidateFrame(aFlags | INVALIDATE_DONT_SCHEDULE_PAINT);
|
||||
tableFrame->InvalidateFrame();
|
||||
}
|
||||
|
||||
|
@ -264,7 +264,7 @@ public:
|
||||
return mFinalWidth;
|
||||
}
|
||||
|
||||
virtual void InvalidateFrame(uint32_t aFlags = 0);
|
||||
virtual void InvalidateFrame();
|
||||
|
||||
protected:
|
||||
|
||||
|
@ -465,11 +465,11 @@ nsTableColGroupFrame::GetType() const
|
||||
}
|
||||
|
||||
void
|
||||
nsTableColGroupFrame::InvalidateFrame(uint32_t aFlags)
|
||||
nsTableColGroupFrame::InvalidateFrame()
|
||||
{
|
||||
nsIFrame::InvalidateFrame(aFlags);
|
||||
nsIFrame::InvalidateFrame();
|
||||
nsTableFrame *tableFrame = nsTableFrame::GetTableFrame(this);
|
||||
tableFrame->InvalidateFrame(aFlags | INVALIDATE_DONT_SCHEDULE_PAINT);
|
||||
tableFrame->InvalidateFrame();
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
|
@ -197,7 +197,7 @@ public:
|
||||
void SetContinuousBCBorderWidth(uint8_t aForSide,
|
||||
BCPixelSize aPixelValue);
|
||||
|
||||
virtual void InvalidateFrame(uint32_t aFlags = 0);
|
||||
virtual void InvalidateFrame();
|
||||
|
||||
protected:
|
||||
nsTableColGroupFrame(nsStyleContext* aContext);
|
||||
|
@ -1352,11 +1352,11 @@ void nsTableRowFrame::InitHasCellWithStyleHeight(nsTableFrame* aTableFrame)
|
||||
}
|
||||
|
||||
void
|
||||
nsTableRowFrame::InvalidateFrame(uint32_t aFlags)
|
||||
nsTableRowFrame::InvalidateFrame()
|
||||
{
|
||||
nsIFrame::InvalidateFrame(aFlags);
|
||||
nsIFrame::InvalidateFrame();
|
||||
nsTableFrame *tableFrame = nsTableFrame::GetTableFrame(this);
|
||||
tableFrame->InvalidateFrame(aFlags | INVALIDATE_DONT_SCHEDULE_PAINT);
|
||||
tableFrame->InvalidateFrame();
|
||||
}
|
||||
|
||||
/* ----- global methods ----- */
|
||||
|
@ -224,7 +224,7 @@ public:
|
||||
void SetContinuousBCBorderWidth(uint8_t aForSide,
|
||||
BCPixelSize aPixelValue);
|
||||
|
||||
virtual void InvalidateFrame(uint32_t aFlags = 0);
|
||||
virtual void InvalidateFrame();
|
||||
|
||||
#ifdef ACCESSIBILITY
|
||||
virtual already_AddRefed<Accessible> CreateAccessible() MOZ_OVERRIDE;
|
||||
|
@ -1843,9 +1843,9 @@ nsTableRowGroupFrame::FrameCursorData::AppendFrame(nsIFrame* aFrame)
|
||||
}
|
||||
|
||||
void
|
||||
nsTableRowGroupFrame::InvalidateFrame(uint32_t aFlags)
|
||||
nsTableRowGroupFrame::InvalidateFrame()
|
||||
{
|
||||
nsIFrame::InvalidateFrame(aFlags);
|
||||
nsIFrame::InvalidateFrame();
|
||||
nsTableFrame *tableFrame = nsTableFrame::GetTableFrame(this);
|
||||
tableFrame->InvalidateFrame(aFlags | INVALIDATE_DONT_SCHEDULE_PAINT);
|
||||
tableFrame->InvalidateFrame();
|
||||
}
|
||||
|
@ -325,7 +325,7 @@ public:
|
||||
|
||||
virtual nsILineIterator* GetLineIterator() { return this; }
|
||||
|
||||
virtual void InvalidateFrame(uint32_t aFlags = 0);
|
||||
virtual void InvalidateFrame();
|
||||
|
||||
protected:
|
||||
nsTableRowGroupFrame(nsStyleContext* aContext);
|
||||
|
Loading…
Reference in New Issue
Block a user