diff options
-rw-r--r-- | src/compositor/meta-compositor-xrender.c | 2 | ||||
-rw-r--r-- | src/compositor/meta-surface.c | 14 | ||||
-rw-r--r-- | src/compositor/meta-surface.h | 2 |
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); |