summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlberts Muktupāvels <alberts.muktupavels@gmail.com>2019-10-22 22:18:43 +0300
committerAlberts Muktupāvels <alberts.muktupavels@gmail.com>2019-10-22 22:18:43 +0300
commit7fccad333f96eea2ac3f334c8e22ba9a89f4ff41 (patch)
tree5f4a84c1f00da0d6d9ff5ffead124149f9bc8c40
parent291b930eaa49dac2b26282d778bab698be2755bd (diff)
downloadmetacity-7fccad333f96eea2ac3f334c8e22ba9a89f4ff41.tar.gz
surface: add is_visible vfunc
-rw-r--r--src/compositor/meta-surface-private.h2
-rw-r--r--src/compositor/meta-surface-vulkan.c7
-rw-r--r--src/compositor/meta-surface-xrender.c14
-rw-r--r--src/compositor/meta-surface.c2
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