diff --git a/.gitignore b/.gitignore index 1401cbd..d04717e 100644 --- a/.gitignore +++ b/.gitignore @@ -222,3 +222,5 @@ mutter-2.31.5.tar.bz2 /mutter-46.1.tar.xz /mutter-46.3.tar.xz /mutter-47.alpha.tar.xz +/mutter-47.beta.tar.xz +/mutter-47.rc.tar.xz diff --git a/0001-Revert-Replace-deprecated-g_qsort_with_data-with-g_s.patch b/0001-Revert-Replace-deprecated-g_qsort_with_data-with-g_s.patch new file mode 100644 index 0000000..7bc6455 --- /dev/null +++ b/0001-Revert-Replace-deprecated-g_qsort_with_data-with-g_s.patch @@ -0,0 +1,63 @@ +From 9ae5ee2ce58f6dcbadeac05ba05be0c329184c16 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Mon, 9 Sep 2024 19:59:56 +0200 +Subject: [PATCH] Revert "Replace deprecated g_qsort_with_data with + g_sort_array" + +This reverts commit 7610973a948bce0b2aea8e1a8e2fb01e00d3526f. +--- + clutter/clutter/clutter-box-layout.c | 6 +++--- + clutter/clutter/clutter-grid-layout.c | 6 +++--- + meson.build | 2 +- + 3 files changed, 7 insertions(+), 7 deletions(-) + +diff --git a/clutter/clutter/clutter-box-layout.c b/clutter/clutter/clutter-box-layout.c +index af814f17dd..12aaa2091b 100644 +--- a/clutter/clutter/clutter-box-layout.c ++++ b/clutter/clutter/clutter-box-layout.c +@@ -588,9 +588,9 @@ distribute_natural_allocation (float extra_space, + */ + + /* Sort descending by gap and position. */ +- g_sort_array (spreading, +- n_requested_sizes, sizeof (unsigned int), +- compare_gap, sizes); ++ g_qsort_with_data (spreading, ++ n_requested_sizes, sizeof (unsigned int), ++ compare_gap, sizes); + + /* Distribute available space. + * This master piece of a loop was conceived by Behdad Esfahbod. +diff --git a/clutter/clutter/clutter-grid-layout.c b/clutter/clutter/clutter-grid-layout.c +index 22f9cf7ec7..8a2c485c23 100644 +--- a/clutter/clutter/clutter-grid-layout.c ++++ b/clutter/clutter/clutter-grid-layout.c +@@ -971,9 +971,9 @@ distribute_natural_allocation (gint extra_space, + */ + + /* Sort descending by gap and position. */ +- g_sort_array (spreading, +- n_requested_sizes, sizeof (guint), +- compare_gap, sizes); ++ g_qsort_with_data (spreading, ++ n_requested_sizes, sizeof (guint), ++ compare_gap, sizes); + + /* Distribute available space. + * This master piece of a loop was conceived by Behdad Esfahbod. +diff --git a/meson.build b/meson.build +index 565e3729fa..68c909b408 100644 +--- a/meson.build ++++ b/meson.build +@@ -16,7 +16,7 @@ mutter_builddir = meson.current_build_dir() + lcms2_req = '>= 2.6' + colord_req = '>= 1.4.5' + fribidi_req = '>= 1.0.0' +-glib_req = '>= 2.81.1' ++glib_req = '>= 2.75.1' + gi_req = '>= 0.9.5' + graphene_req = '>= 1.10.2' + gtk3_req = '>= 3.19.8' +-- +2.46.0 + diff --git a/0001-x11-display-Make-subwindow-redirection-call-mode-spe.patch b/0001-x11-display-Make-subwindow-redirection-call-mode-spe.patch deleted file mode 100644 index dfc5a13..0000000 --- a/0001-x11-display-Make-subwindow-redirection-call-mode-spe.patch +++ /dev/null @@ -1,62 +0,0 @@ -From d1be108c729331aa169a2a0397925c7b17507857 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/4] x11-display: Make subwindow redirection call mode - specific - -This means that for X11 sessions 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. - -For the Xwayland case, we'll do it relatively in the setup phase. It -appears to have been harmless to do it later in the post-opened signal, -but there is no harm in doing it as one of the earlier steps. - -Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3089 ---- - src/compositor/meta-compositor-x11.c | 2 ++ - src/wayland/meta-xwayland.c | 1 + - src/x11/meta-x11-display.c | 1 - - 3 files changed, 3 insertions(+), 1 deletion(-) - -diff --git a/src/compositor/meta-compositor-x11.c b/src/compositor/meta-compositor-x11.c -index cbc48bcefc..760d6fdddc 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, - - compositor_x11->have_x11_sync_object = meta_sync_ring_init (xdisplay); - -+ meta_x11_display_redirect_windows (x11_display, display); -+ - return TRUE; - } - -diff --git a/src/wayland/meta-xwayland.c b/src/wayland/meta-xwayland.c -index 3366f11adc..db0a4a271a 100644 ---- a/src/wayland/meta-xwayland.c -+++ b/src/wayland/meta-xwayland.c -@@ -1179,6 +1179,7 @@ on_x11_display_setup (MetaDisplay *display, - { - MetaX11Display *x11_display = meta_display_get_x11_display (display); - -+ meta_x11_display_redirect_windows (x11_display, display); - meta_xwayland_init_dnd (x11_display); - meta_xwayland_init_xrandr (manager, x11_display); - } -diff --git a/src/x11/meta-x11-display.c b/src/x11/meta-x11-display.c -index 6b8d7faf55..6de0511dc6 100644 ---- a/src/x11/meta-x11-display.c -+++ b/src/x11/meta-x11-display.c -@@ -308,7 +308,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 --- -2.44.0.501.g19981daefd.dirty - diff --git a/0002-display-Move-X11-initial-focus-handling-to-MetaX11Di.patch b/0002-display-Move-X11-initial-focus-handling-to-MetaX11Di.patch deleted file mode 100644 index 2a6ad33..0000000 --- a/0002-display-Move-X11-initial-focus-handling-to-MetaX11Di.patch +++ /dev/null @@ -1,112 +0,0 @@ -From c6a74d8f4161440a530bea5ca3b5cf199beb046b 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/4] 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 bd09082ed2..ddd475f457 100644 ---- a/src/core/display.c -+++ b/src/core/display.c -@@ -945,9 +945,6 @@ meta_display_new (MetaContext *context, - MetaDisplay *display; - MetaDisplayPrivate *priv; - guint32 timestamp; --#ifdef HAVE_X11_CLIENT -- Window old_active_xwindow = None; --#endif - MetaMonitorManager *monitor_manager; - MetaSettings *settings; - MetaInputCapture *input_capture; -@@ -1065,14 +1062,6 @@ meta_display_new (MetaContext *context, - display->last_focus_time = timestamp; - display->last_user_time = timestamp; - --#ifdef HAVE_X11 -- if (!meta_is_wayland_compositor ()) -- meta_prop_get_window (display->x11_display, -- display->x11_display->xroot, -- display->x11_display->atom__NET_ACTIVE_WINDOW, -- &old_active_xwindow); --#endif -- - if (!meta_compositor_manage (display->compositor, error)) - { - g_object_unref (display); -@@ -1093,30 +1082,7 @@ meta_display_new (MetaContext *context, - g_signal_connect (display->gesture_tracker, "state-changed", - G_CALLBACK (gesture_tracker_state_changed), display); - -- /* We know that if mutter is running as a Wayland compositor, -- * we start out with no windows. -- */ --#ifdef HAVE_X11_CLIENT -- if (!meta_is_wayland_compositor ()) -- meta_display_manage_all_xwindows (display); -- -- if (old_active_xwindow != None) -- { -- MetaWindow *old_active_window; -- old_active_window = meta_x11_display_lookup_x_window (display->x11_display, -- old_active_xwindow); -- if (old_active_window) -- meta_window_focus (old_active_window, timestamp); -- else -- meta_display_unset_input_focus (display, timestamp); -- } -- else -- { -- meta_display_unset_input_focus (display, timestamp); -- } --#else - meta_display_unset_input_focus (display, timestamp); --#endif - - g_signal_connect (stage, "notify::is-grabbed", - G_CALLBACK (on_is_grabbed_changed), display); -diff --git a/src/x11/meta-x11-display.c b/src/x11/meta-x11-display.c -index 6de0511dc6..267fa1b835 100644 ---- a/src/x11/meta-x11-display.c -+++ b/src/x11/meta-x11-display.c -@@ -307,7 +307,32 @@ static void - on_x11_display_opened (MetaX11Display *x11_display, - MetaDisplay *display) - { -+ Window old_active_xwindow = None; -+ -+ if (!meta_is_wayland_compositor ()) -+ { -+ meta_prop_get_window (display->x11_display, -+ display->x11_display->xroot, -+ display->x11_display->atom__NET_ACTIVE_WINDOW, -+ &old_active_xwindow); -+ } -+ - meta_display_manage_all_xwindows (display); -+ -+ if (old_active_xwindow != None) -+ { -+ MetaWindow *old_active_window; -+ -+ old_active_window = meta_x11_display_lookup_x_window (x11_display, -+ old_active_xwindow); -+ if (old_active_window) -+ { -+ uint32_t timestamp; -+ -+ timestamp = display->x11_display->timestamp; -+ meta_window_focus (old_active_window, timestamp); -+ } -+ } - } - - static void --- -2.44.0.501.g19981daefd.dirty - diff --git a/0003-tests-x11-Fix-replace-test-to-catch-the-second-insta.patch b/0003-tests-x11-Fix-replace-test-to-catch-the-second-insta.patch deleted file mode 100644 index 3393ff0..0000000 --- a/0003-tests-x11-Fix-replace-test-to-catch-the-second-insta.patch +++ /dev/null @@ -1,33 +0,0 @@ -From cc450c372358bc32960102ffdb2769a9f70cb6d5 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/4] 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 59e460fc33..d95b2460f6 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 --- -2.44.0.501.g19981daefd.dirty - diff --git a/0004-display-Rename-mandatory-X11-initialization-function.patch b/0004-display-Rename-mandatory-X11-initialization-function.patch deleted file mode 100644 index ac3a49d..0000000 --- a/0004-display-Rename-mandatory-X11-initialization-function.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 5b589b298680bd394dd6a1ee7bef3d7def1a96c8 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jonas=20=C3=85dahl?= -Date: Mon, 23 Oct 2023 14:47:33 +0800 -Subject: [PATCH 4/4] display: Rename mandatory X11 initialization function - -Simply to make it clear that the renamed function is specific to a -particular X11 initialization mode (mandatory Xwayland), put that in the -name, so that it's easier to understand when this function is relevant. ---- - src/core/display.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/src/core/display.c b/src/core/display.c -index ddd475f457..e4f623ff9d 100644 ---- a/src/core/display.c -+++ b/src/core/display.c -@@ -910,9 +910,9 @@ meta_display_init_x11 (MetaDisplay *display, - } - - static void --on_x11_initialized (MetaDisplay *display, -- GAsyncResult *result, -- gpointer user_data) -+on_mandatory_x11_initialized (MetaDisplay *display, -+ GAsyncResult *result, -+ gpointer user_data) - { - g_autoptr (GError) error = NULL; - -@@ -1035,7 +1035,7 @@ meta_display_new (MetaContext *context, - if (x11_display_policy == META_X11_DISPLAY_POLICY_MANDATORY) - { - meta_display_init_x11 (display, NULL, -- (GAsyncReadyCallback) on_x11_initialized, -+ (GAsyncReadyCallback) on_mandatory_x11_initialized, - NULL); - } - #endif /* HAVE_XWAYLAND */ --- -2.44.0.501.g19981daefd.dirty - diff --git a/mutter.spec b/mutter.spec index 3907b6c..fc54f1c 100644 --- a/mutter.spec +++ b/mutter.spec @@ -1,25 +1,24 @@ %global glib_version 2.75.1 %global gtk3_version 3.19.8 %global gtk4_version 4.0.0 -%global gsettings_desktop_schemas_version 40~alpha -%global json_glib_version 0.12.0 +%global gsettings_desktop_schemas_version 47~beta %global libinput_version 1.19.0 %global pipewire_version 0.3.33 %global lcms2_version 2.6 %global colord_version 1.4.5 -%global libei_version 1.0.0 +%global libei_version 1.0.901 %global mutter_api_version 15 %global tarball_version %%(echo %{version} | tr '~' '.') Name: mutter -Version: 47.alpha +Version: 47~rc Release: %autorelease Summary: Window and compositing manager based on Clutter License: GPLv2+ URL: http://www.gnome.org -Source0: http://download.gnome.org/sources/%{name}/45/%{name}-%{tarball_version}.tar.xz +Source0: http://download.gnome.org/sources/%{name}/47/%{name}-%{tarball_version}.tar.xz # Work-around for OpenJDK's compliance test Patch: 0001-window-actor-Special-case-shaped-Java-windows.patch @@ -38,11 +37,8 @@ Patch: 0001-Revert-x11-window-Compare-input-shape-to-client-rect.patch Patch: 0002-Revert-x11-window-Update-comment-and-variable-name-t.patch Patch: 0003-Revert-x11-window-Use-correct-bounding-rect-to-deter.patch -# https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3329 -Patch: 0001-x11-display-Make-subwindow-redirection-call-mode-spe.patch -Patch: 0002-display-Move-X11-initial-focus-handling-to-MetaX11Di.patch -Patch: 0003-tests-x11-Fix-replace-test-to-catch-the-second-insta.patch -Patch: 0004-display-Rename-mandatory-X11-initialization-function.patch +# Revert deprecation fix to avoid newer glib requirement +Patch: 0001-Revert-Replace-deprecated-g_qsort_with_data-with-g_s.patch BuildRequires: pkgconfig(gobject-introspection-1.0) >= 1.41.0 BuildRequires: pkgconfig(sm) @@ -79,7 +75,7 @@ BuildRequires: cvt # Bootstrap requirements BuildRequires: gettext-devel git-core BuildRequires: pkgconfig(libcanberra) -BuildRequires: pkgconfig(gsettings-desktop-schemas) >= %{gsettings_desktop_schemas_version} +BuildRequires: gsettings-desktop-schemas-devel >= %{gsettings_desktop_schemas_version} BuildRequires: pkgconfig(gnome-settings-daemon) BuildRequires: meson BuildRequires: pkgconfig(gbm) @@ -95,7 +91,6 @@ BuildRequires: pkgconfig(colord) >= %{colord_version} BuildRequires: pkgconfig(libei-1.0) >= %{libei_version} BuildRequires: pkgconfig(libeis-1.0) >= %{libei_version} -BuildRequires: pkgconfig(json-glib-1.0) >= %{json_glib_version} BuildRequires: pkgconfig(libinput) >= %{libinput_version} BuildRequires: pkgconfig(xwayland) @@ -105,7 +100,6 @@ Requires: control-center-filesystem Requires: gsettings-desktop-schemas%{?_isa} >= %{gsettings_desktop_schemas_version} Requires: gnome-settings-daemon Requires: gtk4%{?_isa} >= %{gtk4_version} -Requires: json-glib%{?_isa} >= %{json_glib_version} Requires: libinput%{?_isa} >= %{libinput_version} Requires: pipewire%{_isa} >= %{pipewire_version} Requires: startup-notification diff --git a/sources b/sources index 813ca82..f93a092 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (mutter-47.alpha.tar.xz) = 5f296aa3fa7739e9ff855e58e3bb8edf2fb869f4ce299982dca948b30ff1cb21adbcf34a18bb78d6e15e59a4451bc1130d985012daecebe0e4bbb0f8e3aa7191 +SHA512 (mutter-47.rc.tar.xz) = 5da95bab925ca8b07860647e9a89152435cde13f4ea66f71bc3c320cc3de0d1d3f79763bc1fa17f124f543cf536232088118944857cc450e6e69959fb868f67c