Bug 1475193 - Use nsWindow::IsComposited() where possible, r?jhorak draft
authorMartin Stransky <stransky@redhat.com>
Thu, 12 Jul 2018 11:51:38 +0200
changeset 817321 5178f13fd056c1cbe6fb089d08a1cbe6b8406c29
parent 816856 aff060ad3204234adae2d59b3776207c6687ebfc
push id116014
push userstransky@redhat.com
push dateThu, 12 Jul 2018 10:40:01 +0000
reviewersjhorak
bugs1475193
milestone63.0a1
Bug 1475193 - Use nsWindow::IsComposited() where possible, r?jhorak MozReview-Commit-ID: E28fUnRFWaY
widget/gtk/nsWindow.cpp
--- a/widget/gtk/nsWindow.cpp
+++ b/widget/gtk/nsWindow.cpp
@@ -2129,20 +2129,17 @@ nsWindow::OnExposeEvent(cairo_t *cr)
 
     // Our bounds may have changed after calling WillPaintWindow.  Clip
     // to the new bounds here.  The region is relative to this
     // window.
     region.And(region, LayoutDeviceIntRect(0, 0, mBounds.width, mBounds.height));
 
     bool shaped = false;
     if (eTransparencyTransparent == GetTransparencyMode()) {
-        GdkScreen *screen = gdk_window_get_screen(mGdkWindow);
-        if (gdk_screen_is_composited(screen) &&
-            gdk_window_get_visual(mGdkWindow) ==
-            gdk_screen_get_rgba_visual(screen)) {
+        if (IsComposited()) {
             // Remove possible shape mask from when window manger was not
             // previously compositing.
             static_cast<nsWindow*>(GetTopLevelWidget())->
                 ClearTransparencyBitmap();
         } else {
             shaped = true;
         }
     }
@@ -2233,22 +2230,19 @@ nsWindow::OnExposeEvent(cairo_t *cr)
 #endif
 #endif
 
 #endif // MOZ_X11
 
     bool painted = false;
     {
       if (GetLayerManager()->GetBackendType() == LayersBackend::LAYERS_BASIC) {
-        GdkScreen *screen = gdk_window_get_screen(mGdkWindow);
         if (GetTransparencyMode() == eTransparencyTransparent &&
             layerBuffering == BufferMode::BUFFER_NONE &&
-            gdk_screen_is_composited(screen) &&
-            gdk_window_get_visual(mGdkWindow) ==
-            gdk_screen_get_rgba_visual(screen)) {
+            IsComposited()) {
           // If our draw target is unbuffered and we use an alpha channel,
           // clear the image beforehand to ensure we don't get artifacts from a
           // reused SHM image. See bug 1258086.
           dt->ClearRect(Rect(boundsRect));
         }
         AutoLayerManagerSetup setupLayerManager(this, ctx, layerBuffering);
         painted = listener->PaintWindow(this, region);
 
@@ -7212,17 +7206,17 @@ void nsWindow::GetCompositorWidgetInitDa
 bool
 nsWindow::IsComposited() const
 {
   if (!mGdkWindow) {
     NS_WARNING("nsWindow::HasARGBVisual called before realization!");
     return false;
   }
 
-  GdkScreen* gdkScreen = gdk_screen_get_default();
+  GdkScreen* gdkScreen = gdk_window_get_screen(mGdkWindow);
   return gdk_screen_is_composited(gdkScreen) &&
          (gdk_window_get_visual(mGdkWindow)
             == gdk_screen_get_rgba_visual(gdkScreen));
 }
 
 #ifdef MOZ_WAYLAND
 wl_display*
 nsWindow::GetWaylandDisplay()