Bug 1391689 - Simplify titlebar image update logic. r?mattwoodrow
MozReview-Commit-ID: 4HPBNazSHDY
--- a/widget/cocoa/nsChildView.mm
+++ b/widget/cocoa/nsChildView.mm
@@ -2078,19 +2078,17 @@ nsChildView::CleanupWindowEffects()
}
void
nsChildView::AddWindowOverlayWebRenderCommands(layers::WebRenderBridgeChild* aWrBridge,
wr::DisplayListBuilder& aBuilder)
{
PrepareWindowEffects();
- LayoutDeviceIntRegion updatedTitlebarRegion;
- updatedTitlebarRegion.And(mUpdatedTitlebarRegion, mTitlebarRect);
- updatedTitlebarRegion.MoveBy(-mTitlebarRect.TopLeft());
+ bool needUpdate = mUpdatedTitlebarRegion.Intersects(mTitlebarRect);
mUpdatedTitlebarRegion.SetEmpty();
if (mTitlebarCGContext) {
gfx::IntSize size(CGBitmapContextGetWidth(mTitlebarCGContext),
CGBitmapContextGetHeight(mTitlebarCGContext));
size_t stride = CGBitmapContextGetBytesPerRow(mTitlebarCGContext);
size_t titlebarCGContextDataLength = stride * size.height;
gfx::SurfaceFormat format = gfx::SurfaceFormat::B8G8R8A8;
@@ -2106,20 +2104,20 @@ nsChildView::AddWindowOverlayWebRenderCo
MOZ_ASSERT(mTitlebarImageKey.isNothing());
}
if (!mTitlebarImageKey) {
mTitlebarImageKey = Some(aWrBridge->GetNextImageKey());
wr::ImageDescriptor descriptor(size, stride, format);
aBuilder.Resources().AddImage(*mTitlebarImageKey, descriptor, buffer);
mTitlebarImageSize = size;
- updatedTitlebarRegion.SetEmpty();
+ needUpdate = false;
}
- if (!updatedTitlebarRegion.IsEmpty()) {
+ if (needUpdate) {
wr::ImageDescriptor descriptor(size, stride, format);
aBuilder.Resources().UpdateImageBuffer(*mTitlebarImageKey, descriptor, buffer);
}
wr::LayoutRect rect = wr::ToLayoutRect(mTitlebarRect);
aBuilder.PushImage(wr::LayoutRect{ rect.origin, { float(size.width), float(size.height) } },
rect, wr::ImageRendering::Auto, *mTitlebarImageKey);
}