summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlberts Muktupāvels <alberts.muktupavels@gmail.com>2019-10-13 22:42:40 +0300
committerAlberts Muktupāvels <alberts.muktupavels@gmail.com>2019-10-13 22:42:40 +0300
commita65aa9ef39e779076662c10914bc70288054ad90 (patch)
treef09a5222569e5df72f75da0baa8733d2a4e7d8c2
parentcc911ba83885d37ee49368b1752a0041299ef9e4 (diff)
downloadmetacity-a65aa9ef39e779076662c10914bc70288054ad90.tar.gz
surface: add meta_surface_is_visible
-rw-r--r--src/compositor/meta-compositor-xrender.c2
-rw-r--r--src/compositor/meta-surface.c14
-rw-r--r--src/compositor/meta-surface.h2
3 files changed, 17 insertions, 1 deletions
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);