diff options
author | Alberts Muktupāvels <alberts.muktupavels@gmail.com> | 2019-10-22 22:56:21 +0300 |
---|---|---|
committer | Alberts Muktupāvels <alberts.muktupavels@gmail.com> | 2019-10-22 22:56:21 +0300 |
commit | 4977d10134e66e5d72689c89ad970f9d578d22ce (patch) | |
tree | 71100c920255fa27a99bd69cdea9866bd2617b90 /src/compositor | |
parent | 973721fcf71886a978f1dfc7970cded60efa8cd8 (diff) | |
download | metacity-4977d10134e66e5d72689c89ad970f9d578d22ce.tar.gz |
surface: add sync_geometry vfunc
Diffstat (limited to 'src/compositor')
-rw-r--r-- | src/compositor/meta-surface-private.h | 5 | ||||
-rw-r--r-- | src/compositor/meta-surface-vulkan.c | 9 | ||||
-rw-r--r-- | src/compositor/meta-surface-xrender.c | 9 | ||||
-rw-r--r-- | src/compositor/meta-surface.c | 19 |
4 files changed, 42 insertions, 0 deletions
diff --git a/src/compositor/meta-surface-private.h b/src/compositor/meta-surface-private.h index c285fe1e..f3cb23a1 100644 --- a/src/compositor/meta-surface-private.h +++ b/src/compositor/meta-surface-private.h @@ -36,6 +36,11 @@ struct _MetaSurfaceClass void (* opacity_changed) (MetaSurface *self); + void (* sync_geometry) (MetaSurface *self, + MetaRectangle old_geometry, + gboolean position_changed, + gboolean size_changed); + 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 49e1a0ce..729fa047 100644 --- a/src/compositor/meta-surface-vulkan.c +++ b/src/compositor/meta-surface-vulkan.c @@ -53,6 +53,14 @@ meta_surface_vulkan_opacity_changed (MetaSurface *surface) } static void +meta_surface_vulkan_sync_geometry (MetaSurface *surface, + MetaRectangle old_geometry, + gboolean position_changed, + gboolean size_changed) +{ +} + +static void meta_surface_vulkan_free_pixmap (MetaSurface *surface) { } @@ -75,6 +83,7 @@ meta_surface_vulkan_class_init (MetaSurfaceVulkanClass *self_class) surface_class->show = meta_surface_vulkan_show; surface_class->hide = meta_surface_vulkan_hide; surface_class->opacity_changed = meta_surface_vulkan_opacity_changed; + surface_class->sync_geometry = meta_surface_vulkan_sync_geometry; 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 73ed1b48..827649f2 100644 --- a/src/compositor/meta-surface-xrender.c +++ b/src/compositor/meta-surface-xrender.c @@ -634,6 +634,14 @@ meta_surface_xrender_opacity_changed (MetaSurface *surface) } static void +meta_surface_xrender_sync_geometry (MetaSurface *surface, + MetaRectangle old_geometry, + gboolean position_changed, + gboolean size_changed) +{ +} + +static void meta_surface_xrender_free_pixmap (MetaSurface *surface) { MetaSurfaceXRender *self; @@ -687,6 +695,7 @@ meta_surface_xrender_class_init (MetaSurfaceXRenderClass *self_class) surface_class->show = meta_surface_xrender_show; surface_class->hide = meta_surface_xrender_hide; surface_class->opacity_changed = meta_surface_xrender_opacity_changed; + surface_class->sync_geometry = meta_surface_xrender_sync_geometry; 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 40f9b5c3..7235596b 100644 --- a/src/compositor/meta-surface.c +++ b/src/compositor/meta-surface.c @@ -845,11 +845,22 @@ meta_surface_sync_geometry (MetaSurface *self) { MetaSurfacePrivate *priv; MetaRectangle rect; + MetaRectangle old_geometry; + gboolean position_changed; + gboolean size_changed; priv = meta_surface_get_instance_private (self); meta_window_get_input_rect (priv->window, &rect); + old_geometry.x = priv->x; + old_geometry.y = priv->y; + old_geometry.width = priv->width; + old_geometry.height = priv->height; + + position_changed = FALSE; + size_changed = FALSE; + if (priv->x != rect.x || priv->y != rect.y) { @@ -859,6 +870,7 @@ meta_surface_sync_geometry (MetaSurface *self) priv->y = rect.y; priv->position_changed = TRUE; + position_changed = TRUE; } if (priv->width != rect.width || @@ -871,7 +883,14 @@ meta_surface_sync_geometry (MetaSurface *self) priv->width = rect.width; priv->height = rect.height; + + size_changed = TRUE; } + + META_SURFACE_GET_CLASS (self)->sync_geometry (self, + old_geometry, + position_changed, + size_changed); } void |