parent
39ca527502
commit
f66da4803a
2
.gitignore
vendored
2
.gitignore
vendored
@ -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
|
||||
|
@ -0,0 +1,63 @@
|
||||
From 9ae5ee2ce58f6dcbadeac05ba05be0c329184c16 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||
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
|
||||
|
@ -1,62 +0,0 @@
|
||||
From d1be108c729331aa169a2a0397925c7b17507857 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||
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
|
||||
|
@ -1,112 +0,0 @@
|
||||
From c6a74d8f4161440a530bea5ca3b5cf199beb046b Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||
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
|
||||
|
@ -1,33 +0,0 @@
|
||||
From cc450c372358bc32960102ffdb2769a9f70cb6d5 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||
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
|
||||
|
@ -1,41 +0,0 @@
|
||||
From 5b589b298680bd394dd6a1ee7bef3d7def1a96c8 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||
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
|
||||
|
20
mutter.spec
20
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
|
||||
|
2
sources
2
sources
@ -1 +1 @@
|
||||
SHA512 (mutter-47.alpha.tar.xz) = 5f296aa3fa7739e9ff855e58e3bb8edf2fb869f4ce299982dca948b30ff1cb21adbcf34a18bb78d6e15e59a4451bc1130d985012daecebe0e4bbb0f8e3aa7191
|
||||
SHA512 (mutter-47.rc.tar.xz) = 5da95bab925ca8b07860647e9a89152435cde13f4ea66f71bc3c320cc3de0d1d3f79763bc1fa17f124f543cf536232088118944857cc450e6e69959fb868f67c
|
||||
|
Loading…
Reference in New Issue
Block a user