Backed out changeset 94302209286e (bug 1321412)

This commit is contained in:
Sebastian Hengst 2016-12-09 22:26:54 +01:00
Родитель fe2223eaca
Коммит 9717b63320
3 изменённых файлов: 7 добавлений и 10 удалений

Просмотреть файл

@ -2209,9 +2209,10 @@ nsIFrame::BuildDisplayListForStackingContext(nsDisplayListBuilder* aBuilder,
if (isTransformed) {
const nsRect overflow = GetVisualOverflowRectRelativeToSelf();
nsDisplayTransform::PrerenderDecision decision =
nsDisplayTransform::ShouldPrerenderTransformedContent(aBuilder, this, &dirtyRect);
nsDisplayTransform::ShouldPrerenderTransformedContent(aBuilder, this);
switch (decision) {
case nsDisplayTransform::FullPrerender:
dirtyRect = overflow;
allowAsyncAnimation = true;
break;
case nsDisplayTransform::NoPrerender:

Просмотреть файл

@ -6228,8 +6228,7 @@ nsDisplayTransform::CanUseAsyncAnimations(nsDisplayListBuilder* aBuilder)
/* static */ auto
nsDisplayTransform::ShouldPrerenderTransformedContent(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame,
nsRect* aDirtyRect) -> PrerenderDecision
nsIFrame* aFrame) -> PrerenderDecision
{
// Elements whose transform has been modified recently, or which
// have a compositor-animated transform, can be prerendered. An element
@ -6252,14 +6251,13 @@ nsDisplayTransform::ShouldPrerenderTransformedContent(nsDisplayListBuilder* aBui
// for shadows, borders, etc.
refSize += nsSize(refSize.width / 8, refSize.height / 8);
gfxSize scale = nsLayoutUtils::GetTransformToAncestorScale(aFrame);
nsRect overflow = aFrame->GetVisualOverflowRectRelativeToSelf();
nsSize frameSize = nsSize(overflow.Size().width * scale.width,
overflow.Size().height * scale.height);
nsSize frameSize = nsSize(
aFrame->GetVisualOverflowRectRelativeToSelf().Size().width * scale.width,
aFrame->GetVisualOverflowRectRelativeToSelf().Size().height * scale.height);
nscoord maxInAppUnits = nscoord_MAX;
if (frameSize <= refSize) {
maxInAppUnits = aFrame->PresContext()->DevPixelsToAppUnits(4096);
if (frameSize <= nsSize(maxInAppUnits, maxInAppUnits)) {
*aDirtyRect = overflow;
return FullPrerender;
}
}

Просмотреть файл

@ -4283,11 +4283,9 @@ public:
/**
* Return FullPrerender when we should try to prerender the entire contents of the
* transformed frame even when it's not completely visible (yet).
* |aDirtyRect| is updated to the area that should be prerendered.
*/
static PrerenderDecision ShouldPrerenderTransformedContent(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame,
nsRect* aDirtyRect);
nsIFrame* aFrame);
bool CanUseAsyncAnimations(nsDisplayListBuilder* aBuilder) override;
bool MayBeAnimated(nsDisplayListBuilder* aBuilder);