Bug 1391689 - Simplify titlebar image update logic. r?mattwoodrow draft
authorMarkus Stange <mstange@themasta.com>
Thu, 07 Sep 2017 15:21:01 +0200
changeset 661391 f04e96b90b82ddc69175768aa8faa5487512fc8a
parent 661390 9c155f3320cfc9f4a9a4c77ce2f8def82ce37553
child 730546 8bd7c471dc0394c02e0a32a760ef840875785c37
push id78732
push userbmo:mstange@themasta.com
push dateFri, 08 Sep 2017 10:14:19 +0000
reviewersmattwoodrow
bugs1391689
milestone57.0a1
Bug 1391689 - Simplify titlebar image update logic. r?mattwoodrow MozReview-Commit-ID: 4HPBNazSHDY
widget/cocoa/nsChildView.mm
--- 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);
   }