From 9e4c4a76db3adab32945869070130db6c0e5cda9 Mon Sep 17 00:00:00 2001 From: Adam Williamson Date: Tue, 24 Oct 2023 11:19:21 -0700 Subject: [PATCH] Update the #3329 backport with jadahl's proposed fix We found several issues with MR #3329, including the live installer being invisible. The change proposed by jadahl in https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3329#note_1874837 seems to solve the problems, so this extends the #3329 backport to also include that change. --- 3329.patch => 0001-modified-3329.patch | 114 ++++++++----------------- mutter.spec | 5 +- 2 files changed, 38 insertions(+), 81 deletions(-) rename 3329.patch => 0001-modified-3329.patch (62%) diff --git a/3329.patch b/0001-modified-3329.patch similarity index 62% rename from 3329.patch rename to 0001-modified-3329.patch index cc5d94c..54f0ed4 100644 --- a/3329.patch +++ b/0001-modified-3329.patch @@ -1,21 +1,18 @@ -From 156f988d3196bbab824236332c6e194323949141 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jonas=20=C3=85dahl?= -Date: Fri, 20 Oct 2023 15:44:29 +0800 -Subject: [PATCH 1/3] compositor/x11: Redirect subwindows after mapping COW +From e20ebeefa42997fe65008b11ef771c71b697273c Mon Sep 17 00:00:00 2001 +From: Adam Williamson +Date: Fri, 20 Oct 2023 22:12:23 -0700 +Subject: [PATCH] modified 3329 -This means we'll do it before any windows are mapped, and before any -plugin implementation is started. Doing it before a plugin is started is -important, because things that the plugin does during startup can have -consequences on how compositing on Xorg works. - -Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3089 +Signed-off-by: Adam Williamson --- - src/compositor/meta-compositor-x11.c | 2 ++ - src/x11/meta-x11-display.c | 1 - - 2 files changed, 2 insertions(+), 1 deletion(-) + src/compositor/meta-compositor-x11.c | 2 ++ + src/core/display.c | 34 ---------------------------- + src/tests/x11-test.sh | 3 +++ + src/x11/meta-x11-display.c | 30 +++++++++++++++++++++++- + 4 files changed, 34 insertions(+), 35 deletions(-) diff --git a/src/compositor/meta-compositor-x11.c b/src/compositor/meta-compositor-x11.c -index 1ad3327ddf6..ce7bc1945ce 100644 +index 1ad3327dd..ce7bc1945 100644 --- a/src/compositor/meta-compositor-x11.c +++ b/src/compositor/meta-compositor-x11.c @@ -188,6 +188,8 @@ meta_compositor_x11_manage (MetaCompositor *compositor, @@ -27,36 +24,8 @@ index 1ad3327ddf6..ce7bc1945ce 100644 return TRUE; } -diff --git a/src/x11/meta-x11-display.c b/src/x11/meta-x11-display.c -index 4e98203dd25..c634a71fb2a 100644 ---- a/src/x11/meta-x11-display.c -+++ b/src/x11/meta-x11-display.c -@@ -301,7 +301,6 @@ on_x11_display_opened (MetaX11Display *x11_display, - MetaDisplay *display) - { - meta_display_manage_all_xwindows (display); -- meta_x11_display_redirect_windows (x11_display, display); - } - - static void --- -GitLab - - -From a8484ffac70d8f1ee4af4ba7ab0ca8b197a0b918 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jonas=20=C3=85dahl?= -Date: Fri, 20 Oct 2023 17:03:31 +0800 -Subject: [PATCH 2/3] display: Move X11 initial focus handling to - MetaX11Display - -It's X11 specific, so put it in the X11 display manager object. ---- - src/core/display.c | 34 ---------------------------------- - src/x11/meta-x11-display.c | 25 +++++++++++++++++++++++++ - 2 files changed, 25 insertions(+), 34 deletions(-) - diff --git a/src/core/display.c b/src/core/display.c -index 0a191c0fbca..b16e50e21de 100644 +index 0a191c0fb..b16e50e21 100644 --- a/src/core/display.c +++ b/src/core/display.c @@ -930,9 +930,6 @@ meta_display_new (MetaContext *context, @@ -115,11 +84,25 @@ index 0a191c0fbca..b16e50e21de 100644 g_signal_connect (stage, "notify::is-grabbed", G_CALLBACK (on_is_grabbed_changed), display); +diff --git a/src/tests/x11-test.sh b/src/tests/x11-test.sh +index 59e460fc3..d95b2460f 100755 +--- a/src/tests/x11-test.sh ++++ b/src/tests/x11-test.sh +@@ -34,6 +34,9 @@ echo \# Launched with pid $MUTTER2_PID + MUTTER2_PID=$! + wait $MUTTER1_PID + ++echo \# Waiting for the second mutter to finish loading ++gdbus wait --session org.gnome.Mutter.IdleMonitor ++ + sleep 2 + + echo \# Terminating clients > /dev/stderr diff --git a/src/x11/meta-x11-display.c b/src/x11/meta-x11-display.c -index c634a71fb2a..599968a363b 100644 +index 4e98203dd..4ca620410 100644 --- a/src/x11/meta-x11-display.c +++ b/src/x11/meta-x11-display.c -@@ -300,7 +300,32 @@ static void +@@ -300,8 +300,36 @@ static void on_x11_display_opened (MetaX11Display *x11_display, MetaDisplay *display) { @@ -132,8 +115,13 @@ index c634a71fb2a..599968a363b 100644 + display->x11_display->atom__NET_ACTIVE_WINDOW, + &old_active_xwindow); + } ++ ++ if (meta_is_wayland_compositor ()) ++ meta_x11_display_redirect_windows (x11_display, display); ++ + meta_display_manage_all_xwindows (display); +- meta_x11_display_redirect_windows (x11_display, display); + + if (old_active_xwindow != None) + { @@ -153,39 +141,5 @@ index c634a71fb2a..599968a363b 100644 static void -- -GitLab - - -From 0fb2b0745bff693f024e9db15a26e86a548c1738 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jonas=20=C3=85dahl?= -Date: Tue, 17 Oct 2023 15:46:00 +0800 -Subject: [PATCH 3/3] tests/x11: Fix replace test to catch the second instance - failing - -The test never noticed that the second instance never actually managed -to load; it was looping a multi second retry session trying to redirect -windows, meaning it failed to catch https://gitlab.gnome.org/GNOME/mutter/-/issues/3089. - -Fix the test so that it always waits for mutter to finish loading -successfully, just like it waits fro the first. ---- - src/tests/x11-test.sh | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/src/tests/x11-test.sh b/src/tests/x11-test.sh -index 59e460fc336..d95b2460f6e 100755 ---- a/src/tests/x11-test.sh -+++ b/src/tests/x11-test.sh -@@ -34,6 +34,9 @@ echo \# Launched with pid $MUTTER2_PID - MUTTER2_PID=$! - wait $MUTTER1_PID - -+echo \# Waiting for the second mutter to finish loading -+gdbus wait --session org.gnome.Mutter.IdleMonitor -+ - sleep 2 - - echo \# Terminating clients > /dev/stderr --- -GitLab +2.41.0 diff --git a/mutter.spec b/mutter.spec index 4099657..829c342 100644 --- a/mutter.spec +++ b/mutter.spec @@ -51,7 +51,10 @@ Patch: 0003-thread-Allow-turning-off-rt-scheduling-for-running-t.patch Patch: 0004-kms-impl-device-Inhibit-real-time-scheduling-when-mo.patch # https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3329 -Patch: 3329.patch +# Modified to add the change from +# https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3329#note_1874837 +# which solves the problems reported with #3329 alone +Patch: 0001-modified-3329.patch BuildRequires: pkgconfig(gobject-introspection-1.0) >= 1.41.0 BuildRequires: pkgconfig(sm)