зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1403433 - Add another variant of SchedulePaint that does not call InvalidateRenderingObservers for PendingAnimationTracker. r=birtles
nsFrame::SchedulePaint() invokes InvalidateRenderingObservers, and InvalidateRenderingObservers ends up posting change hints during we are processing sequential tasks for animations, but we don't allow posting any change hints while we are in the middle of restyling process. Though the change hints posted by InvalidateRenderingObservers are not harmful in this case since the change hints will be processed in a second post traversal without problems. That's said, InvalidateRenderingObservers stuff should be processed in display list based invalidation anyway (bug 1284053). MozReview-Commit-ID: GKVRZ98lvEN
This commit is contained in:
Родитель
333ae6019a
Коммит
653e15ba32
|
@ -173,7 +173,7 @@ PendingAnimationTracker::EnsurePaintIsScheduled()
|
|||
return;
|
||||
}
|
||||
|
||||
rootFrame->SchedulePaint();
|
||||
rootFrame->SchedulePaintWithoutInvalidatingObservers();
|
||||
}
|
||||
|
||||
} // namespace mozilla
|
||||
|
|
|
@ -6687,6 +6687,13 @@ nsIFrame::SchedulePaint(PaintType aType)
|
|||
SchedulePaintInternal(displayRoot, this, aType);
|
||||
}
|
||||
|
||||
void
|
||||
nsIFrame::SchedulePaintWithoutInvalidatingObservers(PaintType aType)
|
||||
{
|
||||
nsIFrame* displayRoot = nsLayoutUtils::GetDisplayRootFrame(this);
|
||||
SchedulePaintInternal(displayRoot, this, aType);
|
||||
}
|
||||
|
||||
Layer*
|
||||
nsIFrame::InvalidateLayer(DisplayItemType aDisplayItemKey,
|
||||
const nsIntRect* aDamageRect,
|
||||
|
|
|
@ -3032,6 +3032,11 @@ public:
|
|||
};
|
||||
void SchedulePaint(PaintType aType = PAINT_DEFAULT);
|
||||
|
||||
// Similar to SchedulePaint() but without calling
|
||||
// InvalidateRenderingObservers() for SVG.
|
||||
void SchedulePaintWithoutInvalidatingObservers(
|
||||
PaintType aType = PAINT_DEFAULT);
|
||||
|
||||
/**
|
||||
* Checks if the layer tree includes a dedicated layer for this
|
||||
* frame/display item key pair, and invalidates at least aDamageRect
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
<style>
|
||||
#b { -webkit-filter: url(#a); }
|
||||
</style>
|
||||
<iframe id="a" height="0" src="data:v;base64,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">
|
||||
</iframe>
|
||||
<table id="b">
|
|
@ -229,12 +229,13 @@ load 1401256.html
|
|||
load 1401692.html
|
||||
load 1401706.html
|
||||
load 1401801.html
|
||||
load 1402218-1.html
|
||||
load 1402366.html
|
||||
load 1402419.html
|
||||
load 1402472.html
|
||||
load 1403028.html
|
||||
load 1402218-1.html
|
||||
load 1403615.html
|
||||
load 1403592.html
|
||||
load 1403712.html
|
||||
load 1403433.html
|
||||
load 1403465.html
|
||||
load 1403592.html
|
||||
load 1403615.html
|
||||
load 1403712.html
|
||||
|
|
Загрузка…
Ссылка в новой задаче