From fd7173fb13c195ac6783c1b113bc7c3045eec1e0 Mon Sep 17 00:00:00 2001 From: Olivier Fourdan Date: Mon, 18 Jun 2018 12:39:11 +0200 Subject: [PATCH] window/wayland: Always update monitor for non-user ops meta_window_wayland_update_main_monitor() would skip the monitor update if the difference in scale between the old and the new monitor would cause another monitor change. While this is suitable when the monitor change results from a user interactively moving the surface between monitors of different scales, this can leave dangling pointers to freed monitors when this is triggered by a change of monitor configuration. Make sure we update the monitor unconditionally if not from a user operation. Closes: https://gitlab.gnome.org/GNOME/mutter/issues/189 (cherry picked from commit a3da4b8d5bd217c0262fd9361036877d155a300f) Bug-GNOME: https://gitlab.gnome.org/GNOME/mutter/issues/189 Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1784398 Applied-Upstream: 3.28.4, commit:https://gitlab.gnome.org/GNOME/mutter/commit/d74a04606 Gbp-Pq: Name window-wayland-Always-update-monitor-for-non-user-ops.patch --- src/wayland/meta-window-wayland.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/wayland/meta-window-wayland.c b/src/wayland/meta-window-wayland.c index 705bc49..8bafb25 100644 --- a/src/wayland/meta-window-wayland.c +++ b/src/wayland/meta-window-wayland.c @@ -413,6 +413,12 @@ meta_window_wayland_update_main_monitor (MetaWindow *window, return; } + if (!user_op) + { + window->monitor = to; + return; + } + from_scale = meta_logical_monitor_get_scale (from); to_scale = meta_logical_monitor_get_scale (to); -- 2.30.2