[metacity] surface: add meta_surface_hide



commit 880e965923094edfe515f41a892fd21f4f57341b
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date:   Fri Oct 11 16:07:16 2019 +0300

    surface: add meta_surface_hide

 src/compositor/meta-compositor.c      |  1 +
 src/compositor/meta-surface-private.h |  2 ++
 src/compositor/meta-surface-vulkan.c  |  6 ++++++
 src/compositor/meta-surface-xrender.c | 11 +++++++++++
 src/compositor/meta-surface.c         |  6 ++++++
 src/compositor/meta-surface.h         |  2 ++
 6 files changed, 28 insertions(+)
---
diff --git a/src/compositor/meta-compositor.c b/src/compositor/meta-compositor.c
index f71f6de5..27612ea0 100644
--- a/src/compositor/meta-compositor.c
+++ b/src/compositor/meta-compositor.c
@@ -466,6 +466,7 @@ meta_compositor_hide_window (MetaCompositor *compositor,
     return;
 
   compositor_class->hide_window (compositor, surface, effect);
+  meta_surface_hide (surface);
 }
 
 void
diff --git a/src/compositor/meta-surface-private.h b/src/compositor/meta-surface-private.h
index 5eccbc31..29f67545 100644
--- a/src/compositor/meta-surface-private.h
+++ b/src/compositor/meta-surface-private.h
@@ -26,6 +26,8 @@ struct _MetaSurfaceClass
 {
   GObjectClass parent_class;
 
+  void (* hide)        (MetaSurface *self);
+
   void (* free_pixmap) (MetaSurface *self);
 
   void (* pre_paint)   (MetaSurface *self);
diff --git a/src/compositor/meta-surface-vulkan.c b/src/compositor/meta-surface-vulkan.c
index 0935aeb5..2a04776b 100644
--- a/src/compositor/meta-surface-vulkan.c
+++ b/src/compositor/meta-surface-vulkan.c
@@ -25,6 +25,11 @@ struct _MetaSurfaceVulkan
 
 G_DEFINE_TYPE (MetaSurfaceVulkan, meta_surface_vulkan, META_TYPE_SURFACE)
 
+static void
+meta_surface_vulkan_hide (MetaSurface *surface)
+{
+}
+
 static void
 meta_surface_vulkan_free_pixmap (MetaSurface *surface)
 {
@@ -42,6 +47,7 @@ meta_surface_vulkan_class_init (MetaSurfaceVulkanClass *self_class)
 
   surface_class = META_SURFACE_CLASS (self_class);
 
+  surface_class->hide = meta_surface_vulkan_hide;
   surface_class->free_pixmap = meta_surface_vulkan_free_pixmap;
   surface_class->pre_paint = meta_surface_vulkan_pre_paint;
 }
diff --git a/src/compositor/meta-surface-xrender.c b/src/compositor/meta-surface-xrender.c
index a6e95e2b..ece44675 100644
--- a/src/compositor/meta-surface-xrender.c
+++ b/src/compositor/meta-surface-xrender.c
@@ -108,6 +108,16 @@ meta_surface_xrender_finalize (GObject *object)
   G_OBJECT_CLASS (meta_surface_xrender_parent_class)->finalize (object);
 }
 
+static void
+meta_surface_xrender_hide (MetaSurface *surface)
+{
+  MetaSurfaceXRender *self;
+
+  self = META_SURFACE_XRENDER (surface);
+
+  free_picture (self);
+}
+
 static void
 meta_surface_xrender_free_pixmap (MetaSurface *surface)
 {
@@ -140,6 +150,7 @@ meta_surface_xrender_class_init (MetaSurfaceXRenderClass *self_class)
 
   object_class->finalize = meta_surface_xrender_finalize;
 
+  surface_class->hide = meta_surface_xrender_hide;
   surface_class->free_pixmap = meta_surface_xrender_free_pixmap;
   surface_class->pre_paint = meta_surface_xrender_pre_paint;
 }
diff --git a/src/compositor/meta-surface.c b/src/compositor/meta-surface.c
index e5a5492a..13cee44a 100644
--- a/src/compositor/meta-surface.c
+++ b/src/compositor/meta-surface.c
@@ -342,6 +342,12 @@ meta_surface_show (MetaSurface *self)
   free_pixmap (self);
 }
 
+void
+meta_surface_hide (MetaSurface *self)
+{
+  META_SURFACE_GET_CLASS (self)->hide (self);
+}
+
 void
 meta_surface_process_damage (MetaSurface        *self,
                              XDamageNotifyEvent *event)
diff --git a/src/compositor/meta-surface.h b/src/compositor/meta-surface.h
index d898ce59..6008837e 100644
--- a/src/compositor/meta-surface.h
+++ b/src/compositor/meta-surface.h
@@ -39,6 +39,8 @@ int             meta_surface_get_height     (MetaSurface        *self);
 
 void            meta_surface_show           (MetaSurface        *self);
 
+void            meta_surface_hide           (MetaSurface        *self);
+
 void            meta_surface_process_damage (MetaSurface        *self,
                                              XDamageNotifyEvent *event);
 


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