mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1248913 - Make nsDisplayBlendContainer active or inactive based on its contents. r=mattwoodrow a=ritu
MozReview-Commit-ID: GN0084Rrmlm
This commit is contained in:
parent
46fecc69df
commit
6325001bf3
@ -4004,6 +4004,15 @@ RequiredLayerStateForChildren(nsDisplayListBuilder* aBuilder,
|
||||
}
|
||||
|
||||
LayerState state = i->GetLayerState(aBuilder, aManager, aParameters);
|
||||
if (state == LAYER_ACTIVE && i->GetType() == nsDisplayItem::TYPE_BLEND_MODE) {
|
||||
// nsDisplayBlendMode always returns LAYER_ACTIVE to ensure that the
|
||||
// blending operation happens in the intermediate surface of its parent
|
||||
// display item (usually an nsDisplayBlendContainer). But this does not
|
||||
// mean that it needs all its ancestor display items to become active.
|
||||
// So we ignore its layer state and look at its children instead.
|
||||
state = RequiredLayerStateForChildren(aBuilder, aManager, aParameters,
|
||||
*i->GetSameCoordinateSystemChildren(), i->GetAnimatedGeometryRoot());
|
||||
}
|
||||
if ((state == LAYER_ACTIVE || state == LAYER_ACTIVE_FORCE) &&
|
||||
state > result) {
|
||||
result = state;
|
||||
@ -4445,7 +4454,7 @@ nsDisplayBlendContainer::GetLayerState(nsDisplayListBuilder* aBuilder,
|
||||
LayerManager* aManager,
|
||||
const ContainerLayerParameters& aParameters)
|
||||
{
|
||||
return mozilla::LAYER_ACTIVE;
|
||||
return RequiredLayerStateForChildren(aBuilder, aManager, aParameters, mList, GetAnimatedGeometryRoot());
|
||||
}
|
||||
|
||||
bool nsDisplayBlendContainer::TryMerge(nsDisplayItem* aItem) {
|
||||
|
Loading…
Reference in New Issue
Block a user