зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1269935 - Replace PresShell::DecVisibleCount() with a general map function. r=mstange
This commit is contained in:
Родитель
1678f1d3bb
Коммит
298a9f9d69
|
@ -5745,18 +5745,17 @@ PresShell::MarkFramesInListApproximatelyVisible(const nsDisplayList& aList)
|
|||
}
|
||||
}
|
||||
|
||||
/* static */ void
|
||||
PresShell::DecVisibleCount(const VisibleFrames& aFrames,
|
||||
VisibilityCounter aCounter,
|
||||
Maybe<OnNonvisible> aNonvisibleAction /* = Nothing() */)
|
||||
template <typename Func> void
|
||||
ForAllTrackedFramesInVisibleSet(const VisibleFrames& aFrames, Func aFunc)
|
||||
{
|
||||
for (auto iter = aFrames.ConstIter(); !iter.Done(); iter.Next()) {
|
||||
nsIFrame* frame = iter.Get()->GetKey();
|
||||
// Decrement the frame's visible count if we're still tracking its
|
||||
// visibility. (We may not be, if the frame disabled visibility tracking
|
||||
// after we added it to the visible frames list.)
|
||||
|
||||
// Call |aFunc| if we're still tracking the frame's visibility. (We may
|
||||
// not be, if the frame disabled visibility tracking after we added it to
|
||||
// the visible frames list.)
|
||||
if (frame->TrackingVisibility()) {
|
||||
frame->DecVisibilityCount(aCounter, aNonvisibleAction);
|
||||
aFunc(frame);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -5801,8 +5800,9 @@ PresShell::RebuildApproximateFrameVisibilityDisplayList(const nsDisplayList& aLi
|
|||
|
||||
MarkFramesInListApproximatelyVisible(aList);
|
||||
|
||||
DecVisibleCount(oldApproximatelyVisibleFrames,
|
||||
VisibilityCounter::MAY_BECOME_VISIBLE);
|
||||
ForAllTrackedFramesInVisibleSet(oldApproximatelyVisibleFrames, [&](nsIFrame* aFrame) {
|
||||
aFrame->DecVisibilityCount(VisibilityCounter::MAY_BECOME_VISIBLE);
|
||||
});
|
||||
|
||||
NotifyCompositorOfVisibleRegionsChange();
|
||||
}
|
||||
|
@ -5827,14 +5827,14 @@ void
|
|||
PresShell::ClearVisibleFramesSets(Maybe<OnNonvisible> aNonvisibleAction
|
||||
/* = Nothing() */)
|
||||
{
|
||||
DecVisibleCount(mApproximatelyVisibleFrames,
|
||||
VisibilityCounter::MAY_BECOME_VISIBLE,
|
||||
aNonvisibleAction);
|
||||
mApproximatelyVisibleFrames.Clear();
|
||||
ForAllTrackedFramesInVisibleSet(mApproximatelyVisibleFrames, [&](nsIFrame* aFrame) {
|
||||
aFrame->DecVisibilityCount(VisibilityCounter::MAY_BECOME_VISIBLE, aNonvisibleAction);
|
||||
});
|
||||
ForAllTrackedFramesInVisibleSet(mInDisplayPortFrames, [&](nsIFrame* aFrame) {
|
||||
aFrame->DecVisibilityCount(VisibilityCounter::IN_DISPLAYPORT, aNonvisibleAction);
|
||||
});
|
||||
|
||||
DecVisibleCount(mInDisplayPortFrames,
|
||||
VisibilityCounter::IN_DISPLAYPORT,
|
||||
aNonvisibleAction);
|
||||
mApproximatelyVisibleFrames.Clear();
|
||||
mInDisplayPortFrames.Clear();
|
||||
|
||||
if (mVisibleRegions) {
|
||||
|
@ -5962,8 +5962,9 @@ PresShell::RebuildApproximateFrameVisibility(nsRect* aRect,
|
|||
|
||||
MarkFramesInSubtreeApproximatelyVisible(rootFrame, vis, aRemoveOnly);
|
||||
|
||||
DecVisibleCount(oldApproximatelyVisibleFrames,
|
||||
VisibilityCounter::MAY_BECOME_VISIBLE);
|
||||
ForAllTrackedFramesInVisibleSet(oldApproximatelyVisibleFrames, [&](nsIFrame* aFrame) {
|
||||
aFrame->DecVisibilityCount(VisibilityCounter::MAY_BECOME_VISIBLE);
|
||||
});
|
||||
|
||||
NotifyCompositorOfVisibleRegionsChange();
|
||||
}
|
||||
|
@ -6403,7 +6404,9 @@ PresShell::Paint(nsView* aViewToPaint,
|
|||
nsLayoutUtils::PaintFrame(nullptr, frame, aDirtyRegion, bgcolor,
|
||||
nsDisplayListBuilderMode::PAINTING, flags);
|
||||
|
||||
DecVisibleCount(oldInDisplayPortFrames, VisibilityCounter::IN_DISPLAYPORT);
|
||||
ForAllTrackedFramesInVisibleSet(oldInDisplayPortFrames, [&](nsIFrame* aFrame) {
|
||||
aFrame->DecVisibilityCount(VisibilityCounter::IN_DISPLAYPORT);
|
||||
});
|
||||
|
||||
if (mVisibleRegions &&
|
||||
!mNotifyCompositorOfVisibleRegionsChangeEvent.IsPending()) {
|
||||
|
|
|
@ -777,10 +777,6 @@ protected:
|
|||
const nsRect& aRect,
|
||||
bool aRemoveOnly = false);
|
||||
|
||||
void DecVisibleCount(const VisibleFrames& aFrames,
|
||||
VisibilityCounter aCounter,
|
||||
Maybe<OnNonvisible> aNonvisibleAction = Nothing());
|
||||
|
||||
void InitVisibleRegionsIfVisualizationEnabled(VisibilityCounter aForCounter);
|
||||
void AddFrameToVisibleRegions(nsIFrame* aFrame, VisibilityCounter aForCounter);
|
||||
void NotifyCompositorOfVisibleRegionsChange();
|
||||
|
|
Загрузка…
Ссылка в новой задаче