[metacity] surface: add is_visible vfunc



commit 7fccad333f96eea2ac3f334c8e22ba9a89f4ff41
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date:   Tue Oct 22 22:18:43 2019 +0300

    surface: add is_visible vfunc

 src/compositor/meta-surface-private.h |  2 ++
 src/compositor/meta-surface-vulkan.c  |  7 +++++++
 src/compositor/meta-surface-xrender.c | 14 ++++++++++++--
 src/compositor/meta-surface.c         |  2 +-
 4 files changed, 22 insertions(+), 3 deletions(-)
---
diff --git a/src/compositor/meta-surface-private.h b/src/compositor/meta-surface-private.h
index a92a69c9..f411b1be 100644
--- a/src/compositor/meta-surface-private.h
+++ b/src/compositor/meta-surface-private.h
@@ -28,6 +28,8 @@ struct _MetaSurfaceClass
 
   cairo_surface_t * (* get_image)       (MetaSurface *self);
 
+  gboolean          (* is_visible)      (MetaSurface *self);
+
   void              (* show)            (MetaSurface *self);
 
   void              (* hide)            (MetaSurface *self);
diff --git a/src/compositor/meta-surface-vulkan.c b/src/compositor/meta-surface-vulkan.c
index bb02e2d9..3b0c0f08 100644
--- a/src/compositor/meta-surface-vulkan.c
+++ b/src/compositor/meta-surface-vulkan.c
@@ -31,6 +31,12 @@ meta_surface_vulkan_get_image (MetaSurface *surface)
   return NULL;
 }
 
+static gboolean
+meta_surface_vulkan_is_visible (MetaSurface *surface)
+{
+  return FALSE;
+}
+
 static void
 meta_surface_vulkan_show (MetaSurface *surface)
 {
@@ -64,6 +70,7 @@ meta_surface_vulkan_class_init (MetaSurfaceVulkanClass *self_class)
   surface_class = META_SURFACE_CLASS (self_class);
 
   surface_class->get_image = meta_surface_vulkan_get_image;
+  surface_class->is_visible = meta_surface_vulkan_is_visible;
   surface_class->show = meta_surface_vulkan_show;
   surface_class->hide = meta_surface_vulkan_hide;
   surface_class->opacity_changed = meta_surface_vulkan_opacity_changed;
diff --git a/src/compositor/meta-surface-xrender.c b/src/compositor/meta-surface-xrender.c
index 8a1dc2b5..f86cef22 100644
--- a/src/compositor/meta-surface-xrender.c
+++ b/src/compositor/meta-surface-xrender.c
@@ -588,6 +588,16 @@ meta_surface_xrender_get_image (MetaSurface *surface)
   return image;
 }
 
+static gboolean
+meta_surface_xrender_is_visible (MetaSurface *surface)
+{
+  MetaSurfaceXRender *self;
+
+  self = META_SURFACE_XRENDER (surface);
+
+  return self->picture != None;
+}
+
 static void
 meta_surface_xrender_show (MetaSurface *surface)
 {
@@ -672,6 +682,7 @@ meta_surface_xrender_class_init (MetaSurfaceXRenderClass *self_class)
   object_class->finalize = meta_surface_xrender_finalize;
 
   surface_class->get_image = meta_surface_xrender_get_image;
+  surface_class->is_visible = meta_surface_xrender_is_visible;
   surface_class->show = meta_surface_xrender_show;
   surface_class->hide = meta_surface_xrender_hide;
   surface_class->opacity_changed = meta_surface_xrender_opacity_changed;
@@ -702,8 +713,7 @@ meta_surface_xrender_paint (MetaSurfaceXRender *self,
                             Picture             paint_buffer,
                             gboolean            opaque)
 {
-  if (!meta_surface_is_visible (META_SURFACE (self)) ||
-      self->picture == None)
+  if (!meta_surface_is_visible (META_SURFACE (self)))
     return;
 
   if (opaque)
diff --git a/src/compositor/meta-surface.c b/src/compositor/meta-surface.c
index 98563259..cff7d3ca 100644
--- a/src/compositor/meta-surface.c
+++ b/src/compositor/meta-surface.c
@@ -744,7 +744,7 @@ meta_surface_is_visible (MetaSurface *self)
       priv->pixmap == None)
     return FALSE;
 
-  return TRUE;
+  return META_SURFACE_GET_CLASS (self)->is_visible (self);
 }
 
 void


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