Bug 1360246 - Remove the ParentBounds and TransformedVisibleBoundsRelativeToParent functions. r=nical
These functions also have built-in assumptions about the stacking
context structure mapping to the layer tree structure which are not
necessarily valid. So we remove these functions and update code that
uses them.
MozReview-Commit-ID: UkXXAF59qv
--- a/gfx/layers/wr/WebRenderDisplayItemLayer.cpp
+++ b/gfx/layers/wr/WebRenderDisplayItemLayer.cpp
@@ -35,17 +35,18 @@ WebRenderDisplayItemLayer::RenderLayer(w
{
if (mVisibleRegion.IsEmpty()) {
return;
}
Maybe<WrImageMask> mask = BuildWrMaskLayer(false);
WrImageMask* imageMask = mask.ptrOr(nullptr);
if (imageMask) {
- gfx::Rect rect = TransformedVisibleBoundsRelativeToParent();
+ gfx::Rect rect = GetTransform().TransformBounds(Bounds().ToUnknownRect());
+ // XXX: this is probably not correct, see bug 1361357
gfx::Rect clip(0.0, 0.0, rect.width, rect.height);
aBuilder.PushClip(wr::ToWrRect(clip), imageMask);
}
if (mItem) {
wr::DisplayListBuilder builder(WrBridge()->GetPipeline());
// We might have recycled this layer. Throw away the old commands.
mParentCommands.Clear();
--- a/gfx/layers/wr/WebRenderLayer.cpp
+++ b/gfx/layers/wr/WebRenderLayer.cpp
@@ -35,35 +35,16 @@ WrImageKey
WebRenderLayer::GetImageKey()
{
WrImageKey key;
key.mNamespace = WrBridge()->GetNamespace();
key.mHandle = WrBridge()->GetNextResourceId();
return key;
}
-LayerRect
-WebRenderLayer::ParentBounds()
-{
- // Walk up to find the parent stacking context. This will be created by the
- // parent layer which must be a ContainerLayer if it exists.
- if (Layer* parent = GetLayer()->GetParent()) {
- return ToWebRenderLayer(parent)->Bounds();
- }
- return LayerRect();
-}
-
-gfx::Rect
-WebRenderLayer::TransformedVisibleBoundsRelativeToParent()
-{
- IntRect bounds = GetLayer()->GetVisibleRegion().GetBounds().ToUnknownRect();
- Rect transformed = GetLayer()->GetTransform().TransformBounds(IntRectToRect(bounds));
- return transformed - ParentBounds().ToUnknownRect().TopLeft();
-}
-
Maybe<WrImageMask>
WebRenderLayer::BuildWrMaskLayer(bool aUnapplyLayerTransform)
{
if (GetLayer()->GetMaskLayer()) {
WebRenderLayer* maskLayer = ToWebRenderLayer(GetLayer()->GetMaskLayer());
// The size of mask layer is transformed, and we may set the layer transform
// to wr stacking context. So we should apply inverse transform for mask layer
--- a/gfx/layers/wr/WebRenderLayer.h
+++ b/gfx/layers/wr/WebRenderLayer.h
@@ -47,21 +47,18 @@ public:
WebRenderLayerManager* WrManager();
WebRenderBridgeChild* WrBridge();
WrImageKey GetImageKey();
LayerRect Bounds();
LayerRect BoundsForStackingContext();
protected:
BoundsTransformMatrix BoundsTransform();
- LayerRect ParentBounds();
Maybe<LayerRect> ClipRect();
- gfx::Rect TransformedVisibleBoundsRelativeToParent();
-
void DumpLayerInfo(const char* aLayerType, const LayerRect& aRect);
Maybe<WrImageMask> BuildWrMaskLayer(bool aUnapplyLayerTransform);
};
} // namespace layers
} // namespace mozilla
#endif /* GFX_WEBRENDERLAYER_H */