Bug 936500 - Always build layers for nsDisplayScrollLayer. r=tn

APZC information is associated with layers, and having those layers suddenly
disappear because they became occluded, or their displayports are off-screen
has undesired effects.
This commit is contained in:
Chris Lord 2013-12-13 19:37:34 +00:00
parent f335da97be
commit 68d407c357
2 changed files with 12 additions and 0 deletions

View File

@ -3498,6 +3498,16 @@ nsDisplayScrollLayer::BuildLayer(nsDisplayListBuilder* aBuilder,
return layer.forget();
}
bool
nsDisplayScrollLayer::ShouldBuildLayerEvenIfInvisible(nsDisplayListBuilder* aBuilder)
{
if (nsLayoutUtils::GetDisplayPort(mScrolledFrame->GetContent(), nullptr)) {
return true;
}
return nsDisplayWrapList::ShouldBuildLayerEvenIfInvisible(aBuilder);
}
bool
nsDisplayScrollLayer::ComputeVisibility(nsDisplayListBuilder* aBuilder,
nsRegion* aVisibleRegion,

View File

@ -2713,6 +2713,8 @@ public:
LayerManager* aManager,
const ContainerLayerParameters& aContainerParameters) MOZ_OVERRIDE;
virtual bool ShouldBuildLayerEvenIfInvisible(nsDisplayListBuilder* aBuilder) MOZ_OVERRIDE;
virtual bool ComputeVisibility(nsDisplayListBuilder* aBuilder,
nsRegion* aVisibleRegion,
const nsRect& aAllowVisibleRegionExpansion) MOZ_OVERRIDE;