[mutter] window/x11: Check before freezing commits
- From: Marge Bot <marge-bot src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] window/x11: Check before freezing commits
- Date: Sat, 30 Jan 2021 10:34:14 +0000 (UTC)
commit a2e2cfe43714df656e451ef525b97c24fa786fed
Author: Olivier Fourdan <ofourdan redhat com>
Date: Fri Jan 22 16:30:57 2021 +0100
window/x11: Check before freezing commits
Now that we have a window actor API that can hint whether or not the
window actor would support freezing commits, use it to avoid freezing
Xwayland commit on actors that will not be thawed after paint.
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1615
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1678>
src/x11/window-x11.c | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
---
diff --git a/src/x11/window-x11.c b/src/x11/window-x11.c
index 2b191c2a1f..fcb0653df5 100644
--- a/src/x11/window-x11.c
+++ b/src/x11/window-x11.c
@@ -35,6 +35,7 @@
#include "backends/meta-logical-monitor.h"
#include "backends/x11/meta-backend-x11.h"
+#include "compositor/meta-window-actor-private.h"
#include "core/boxes-private.h"
#include "core/frame.h"
#include "core/meta-workspace-manager-private.h"
@@ -1324,6 +1325,18 @@ meta_window_x11_current_workspace_changed (MetaWindow *window)
meta_x11_error_trap_pop (x11_display);
}
+static gboolean
+meta_window_x11_can_freeze_commits (MetaWindow *window)
+{
+ MetaWindowActor *window_actor;
+
+ window_actor = meta_window_actor_from_window (window);
+ if (window_actor == NULL)
+ return FALSE;
+
+ return meta_window_actor_can_freeze_commits (window_actor);
+}
+
static void
meta_window_x11_move_resize_internal (MetaWindow *window,
MetaGravity gravity,
@@ -1475,7 +1488,8 @@ meta_window_x11_move_resize_internal (MetaWindow *window,
/* If resizing, freeze commits - This is for Xwayland, and a no-op on Xorg */
if (need_resize_client || need_resize_frame)
{
- if (!meta_window_x11_should_thaw_after_paint (window))
+ if (meta_window_x11_can_freeze_commits (window) &&
+ !meta_window_x11_should_thaw_after_paint (window))
{
meta_window_x11_set_thaw_after_paint (window, TRUE);
meta_window_x11_freeze_commits (window);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]