[metacity] surface: add meta_surface_is_visible



commit a65aa9ef39e779076662c10914bc70288054ad90
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date:   Sun Oct 13 22:42:40 2019 +0300

    surface: add meta_surface_is_visible

 src/compositor/meta-compositor-xrender.c |  2 +-
 src/compositor/meta-surface.c            | 14 ++++++++++++++
 src/compositor/meta-surface.h            |  2 ++
 3 files changed, 17 insertions(+), 1 deletion(-)
---
diff --git a/src/compositor/meta-compositor-xrender.c b/src/compositor/meta-compositor-xrender.c
index 542afb7d..ea081de2 100644
--- a/src/compositor/meta-compositor-xrender.c
+++ b/src/compositor/meta-compositor-xrender.c
@@ -1256,7 +1256,7 @@ paint_windows (MetaCompositorXRender *xrender,
           continue;
         }
 
-      if (!meta_window_is_toplevel_mapped (cw->window))
+      if (!meta_surface_is_visible (surface))
         continue;
 
       picture = meta_surface_xrender_get_picture (META_SURFACE_XRENDER (surface));
diff --git a/src/compositor/meta-surface.c b/src/compositor/meta-surface.c
index 6542df7d..25e31ac5 100644
--- a/src/compositor/meta-surface.c
+++ b/src/compositor/meta-surface.c
@@ -340,6 +340,20 @@ meta_surface_get_image (MetaSurface *self)
   return META_SURFACE_GET_CLASS (self)->get_image (self);
 }
 
+gboolean
+meta_surface_is_visible (MetaSurface *self)
+{
+  MetaSurfacePrivate *priv;
+
+  priv = meta_surface_get_instance_private (self);
+
+  if (!meta_window_is_toplevel_mapped (priv->window) ||
+      priv->pixmap == None)
+    return FALSE;
+
+  return TRUE;
+}
+
 void
 meta_surface_show (MetaSurface *self)
 {
diff --git a/src/compositor/meta-surface.h b/src/compositor/meta-surface.h
index 7f374d53..8a2b1679 100644
--- a/src/compositor/meta-surface.h
+++ b/src/compositor/meta-surface.h
@@ -39,6 +39,8 @@ int              meta_surface_get_height      (MetaSurface        *self);
 
 cairo_surface_t *meta_surface_get_image       (MetaSurface        *self);
 
+gboolean         meta_surface_is_visible      (MetaSurface        *self);
+
 void             meta_surface_show            (MetaSurface        *self);
 
 void             meta_surface_hide            (MetaSurface        *self);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]