From 10796e672619347848d0f66f40cd9cde32994e20 Mon Sep 17 00:00:00 2001 From: Olivier Fourdan Date: Fri, 6 Dec 2019 13:04:12 +0100 Subject: [PATCH] window/x11: Add flag to thaw commits after resize To be able to thaw commits following a resize that might have frozen commits, to keep freezes and thaws even, we need a way to tell whether a repaint should also thaw commits. Add a flag to `MetaWindowX11` and the appropriate functions to set and query it. https://gitlab.gnome.org/GNOME/mutter/merge_requests/942 --- src/x11/window-x11-private.h | 3 +++ src/x11/window-x11.c | 19 +++++++++++++++++++ src/x11/window-x11.h | 4 ++++ 3 files changed, 26 insertions(+) diff --git a/src/x11/window-x11-private.h b/src/x11/window-x11-private.h index a073a5b8a..621609e3e 100644 --- a/src/x11/window-x11-private.h +++ b/src/x11/window-x11-private.h @@ -75,6 +75,9 @@ struct _MetaWindowX11Private MetaIconCache icon_cache; Pixmap wm_hints_pixmap; Pixmap wm_hints_mask; + + /* Freeze/thaw on resize (for Xwayland) */ + gboolean thaw_after_paint; }; G_END_DECLS diff --git a/src/x11/window-x11.c b/src/x11/window-x11.c index 9caf75ad6..fdd86efa6 100644 --- a/src/x11/window-x11.c +++ b/src/x11/window-x11.c @@ -4022,3 +4022,22 @@ meta_window_x11_thaw_commits (MetaWindow *window) MetaWindowX11 *window_x11 = META_WINDOW_X11 (window); META_WINDOW_X11_GET_CLASS (window_x11)->thaw_commits (window); } + +void +meta_window_x11_set_thaw_after_paint (MetaWindow *window, + gboolean thaw_after_paint) +{ + MetaWindowX11 *window_x11 = META_WINDOW_X11 (window); + MetaWindowX11Private *priv = meta_window_x11_get_instance_private (window_x11); + + priv->thaw_after_paint = thaw_after_paint; +} + +gboolean +meta_window_x11_should_thaw_after_paint (MetaWindow *window) +{ + MetaWindowX11 *window_x11 = META_WINDOW_X11 (window); + MetaWindowX11Private *priv = meta_window_x11_get_instance_private (window_x11); + + return priv->thaw_after_paint; +} diff --git a/src/x11/window-x11.h b/src/x11/window-x11.h index 2180ce976..7864135bb 100644 --- a/src/x11/window-x11.h +++ b/src/x11/window-x11.h @@ -84,4 +84,8 @@ Window meta_window_x11_get_toplevel_xwindow (MetaWindow *window); void meta_window_x11_freeze_commits (MetaWindow *window); void meta_window_x11_thaw_commits (MetaWindow *window); +void meta_window_x11_set_thaw_after_paint (MetaWindow *window, + gboolean thaw_after_paint); +gboolean meta_window_x11_should_thaw_after_paint (MetaWindow *window); + #endif