mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-23 10:15:41 +00:00
Bug 1234485 - Part 4. Implement nsDisplayMask::ShouldPaintOnMaskLayer. r=mstange
MozReview-Commit-ID: CChi1vbLLh8 --HG-- extra : rebase_source : d869aeb9993e6d631a494f0b63494de3b576b5b3
This commit is contained in:
parent
4d9495cf77
commit
51fd365a1a
@ -7057,9 +7057,37 @@ nsDisplayMask::GetLayerState(nsDisplayListBuilder* aBuilder,
|
||||
LayerManager* aManager,
|
||||
const ContainerLayerParameters& aParameters)
|
||||
{
|
||||
if (ShouldPaintOnMaskLayer(aManager)) {
|
||||
return RequiredLayerStateForChildren(aBuilder, aManager, aParameters,
|
||||
mList, GetAnimatedGeometryRoot());
|
||||
}
|
||||
|
||||
return LAYER_SVG_EFFECTS;
|
||||
}
|
||||
|
||||
bool nsDisplayMask::ShouldPaintOnMaskLayer(LayerManager* aManager)
|
||||
{
|
||||
if (!aManager->IsCompositingCheap()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
nsSVGIntegrationUtils::MaskUsage maskUsage;
|
||||
nsSVGIntegrationUtils::DetermineMaskUsage(mFrame, mHandleOpacity, maskUsage);
|
||||
|
||||
if (!maskUsage.shouldGenerateMaskLayer ||
|
||||
maskUsage.opacity != 1.0 || maskUsage.shouldApplyClipPath ||
|
||||
maskUsage.shouldApplyBasicShape ||
|
||||
maskUsage.shouldGenerateClipMaskLayer) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!nsSVGIntegrationUtils::IsMaskResourceReady(mFrame)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool nsDisplayMask::ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
nsRegion* aVisibleRegion)
|
||||
{
|
||||
|
@ -3918,6 +3918,10 @@ public:
|
||||
return mDestRects;
|
||||
}
|
||||
private:
|
||||
// According to mask property and the capability of aManager, determine
|
||||
// whether paint mask onto a dedicate mask layer.
|
||||
bool ShouldPaintOnMaskLayer(LayerManager* aManager);
|
||||
|
||||
nsTArray<nsRect> mDestRects;
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user