From a6f46c185c5c1a2f712b7411e8908c4318b6e6b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Sun, 11 Feb 2024 20:11:00 +0100 Subject: [PATCH] Backport F40 changes Resolves: RHEL-30252 --- .gitignore | 3 + ...nput-region-from-frame-window-for-de.patch | 38 ++++---- ...cale-monitor-framebuffer-experimenta.patch | 29 ------ ...er-Create-CrtcStateImpls-for-all-act.patch | 58 ------------ ...tor-Special-case-shaped-Java-windows.patch | 47 ++++++++-- fix-i686-build.patch | 90 ------------------- mutter-42.alpha-disable-tegra.patch | 20 ++--- mutter.spec | 15 +--- sources | 2 +- 9 files changed, 78 insertions(+), 224 deletions(-) delete mode 100644 0001-gschema-Enable-scale-monitor-framebuffer-experimenta.patch delete mode 100644 0001-kms-cursor-manager-Create-CrtcStateImpls-for-all-act.patch delete mode 100644 fix-i686-build.patch diff --git a/.gitignore b/.gitignore index 01ecdb5..11b5045 100644 --- a/.gitignore +++ b/.gitignore @@ -216,3 +216,6 @@ mutter-2.31.5.tar.bz2 /mutter-45.1.tar.xz /mutter-45.2.tar.xz /mutter-46.alpha.tar.xz +/mutter-46.beta.tar.xz +/mutter-46.rc.tar.xz +/mutter-46.0.tar.xz diff --git a/0001-Revert-x11-Use-input-region-from-frame-window-for-de.patch b/0001-Revert-x11-Use-input-region-from-frame-window-for-de.patch index 303a07d..c2baf41 100644 --- a/0001-Revert-x11-Use-input-region-from-frame-window-for-de.patch +++ b/0001-Revert-x11-Use-input-region-from-frame-window-for-de.patch @@ -1,4 +1,4 @@ -From 299a0480fc04b7befcb768eeb98d187cf12487d1 Mon Sep 17 00:00:00 2001 +From 1d5c47f8970c2027de5f6fa49b84de73d55b419b Mon Sep 17 00:00:00 2001 From: Adam Williamson Date: Thu, 5 Oct 2023 13:09:46 -0700 Subject: [PATCH] Revert "x11: Use input region from frame window for decorated @@ -15,10 +15,10 @@ Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3068 2 files changed, 10 insertions(+), 26 deletions(-) diff --git a/src/core/frame.c b/src/core/frame.c -index 6b97306a1c..0f2eb349d1 100644 +index 145f0b7bd7..1c90ce4231 100644 --- a/src/core/frame.c +++ b/src/core/frame.c -@@ -34,7 +34,6 @@ +@@ -35,7 +35,6 @@ #include "x11/window-props.h" #include @@ -26,7 +26,7 @@ index 6b97306a1c..0f2eb349d1 100644 #define EVENT_MASK (SubstructureRedirectMask | \ StructureNotifyMask | SubstructureNotifyMask | \ -@@ -108,9 +107,6 @@ meta_window_set_frame_xwindow (MetaWindow *window, +@@ -109,9 +108,6 @@ meta_window_x11_set_frame_xwindow (MetaWindow *window, XChangeWindowAttributes (x11_display->xdisplay, frame->xwindow, CWEventMask, &attrs); @@ -36,7 +36,7 @@ index 6b97306a1c..0f2eb349d1 100644 meta_x11_display_register_x_window (x11_display, &frame->xwindow, window); if (window->mapped) -@@ -219,9 +215,6 @@ meta_window_destroy_frame (MetaWindow *window) +@@ -220,9 +216,6 @@ meta_window_destroy_frame (MetaWindow *window) window->reparents_pending += 1; } @@ -44,15 +44,15 @@ index 6b97306a1c..0f2eb349d1 100644 - XShapeSelectInput (x11_display->xdisplay, frame->xwindow, NoEventMask); - XDeleteProperty (x11_display->xdisplay, - window->xwindow, + meta_window_x11_get_xwindow (window), x11_display->atom__MUTTER_NEEDS_FRAME); diff --git a/src/x11/window-x11.c b/src/x11/window-x11.c -index ce6dcf968b..7574948aed 100644 +index 745c45db18..8edff883c9 100644 --- a/src/x11/window-x11.c +++ b/src/x11/window-x11.c -@@ -2027,10 +2027,6 @@ meta_window_x11_constructed (GObject *object) - window->hidden = FALSE; - priv->border_width = attrs.border_width; +@@ -2082,10 +2082,6 @@ meta_window_x11_constructed (GObject *object) + priv->keys_grabbed = FALSE; + priv->grab_on_frame = FALSE; - g_signal_connect (window, "notify::decorated", - G_CALLBACK (meta_window_x11_update_input_region), @@ -61,7 +61,7 @@ index ce6dcf968b..7574948aed 100644 G_OBJECT_CLASS (meta_window_x11_parent_class)->constructed (object); } -@@ -2314,21 +2310,16 @@ meta_window_x11_update_input_region (MetaWindow *window) +@@ -2400,21 +2396,16 @@ meta_window_x11_update_input_region (MetaWindow *window) g_autoptr (MtkRegion) region = NULL; MetaWindowX11 *window_x11 = META_WINDOW_X11 (window); MetaWindowX11Private *priv = meta_window_x11_get_instance_private (window_x11); @@ -75,7 +75,7 @@ index ce6dcf968b..7574948aed 100644 { - if (!window->frame) - { -- if (window->input_region) +- if (priv->input_region) - meta_window_set_input_region (window, NULL); - return; - } @@ -83,23 +83,23 @@ index ce6dcf968b..7574948aed 100644 - } - else - { -- xwindow = window->xwindow; -+ if (window->input_region) +- xwindow = priv->xwindow; ++ if (priv->input_region) + meta_window_set_input_region (window, NULL); + return; } if (META_X11_DISPLAY_HAS_SHAPE (x11_display)) -@@ -2340,7 +2331,7 @@ meta_window_x11_update_input_region (MetaWindow *window) +@@ -2426,7 +2417,7 @@ meta_window_x11_update_input_region (MetaWindow *window) - meta_x11_error_trap_push (x11_display); + mtk_x11_error_trap_push (x11_display->xdisplay); rects = XShapeGetRectangles (x11_display->xdisplay, - xwindow, -+ window->xwindow, ++ priv->xwindow, ShapeInput, &n_rects, &ordering); -@@ -2394,8 +2385,8 @@ meta_window_x11_update_input_region (MetaWindow *window) +@@ -2480,8 +2471,8 @@ meta_window_x11_update_input_region (MetaWindow *window) client_area.x = 0; client_area.y = 0; @@ -111,5 +111,5 @@ index ce6dcf968b..7574948aed 100644 /* The shape we get back from the client may have coordinates * outside of the frame. The X SHAPE Extension requires that -- -2.43.0 +2.43.2 diff --git a/0001-gschema-Enable-scale-monitor-framebuffer-experimenta.patch b/0001-gschema-Enable-scale-monitor-framebuffer-experimenta.patch deleted file mode 100644 index 74dc36f..0000000 --- a/0001-gschema-Enable-scale-monitor-framebuffer-experimenta.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 4a82121b6c90df48b474bce31ca16e15f55368dc Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jonas=20=C3=85dahl?= -Date: Mon, 4 Sep 2023 10:22:49 +0200 -Subject: [PATCH] gschema: Enable 'scale-monitor-framebuffer' experimental - feature - -Enabling this by default was the consensus in a previous meeting[1]. - -[1] https://pagure.io/fedora-workstation/issue/357#comment-848857 ---- - data/org.gnome.mutter.gschema.xml.in | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/data/org.gnome.mutter.gschema.xml.in b/data/org.gnome.mutter.gschema.xml.in -index 5d56ae2d37..8052032c51 100644 ---- a/data/org.gnome.mutter.gschema.xml.in -+++ b/data/org.gnome.mutter.gschema.xml.in -@@ -103,7 +103,7 @@ - - -- [] -+ ["scale-monitor-framebuffer"] - Enable experimental features - - To enable experimental features, add the feature keyword to the list. --- -2.41.0 - diff --git a/0001-kms-cursor-manager-Create-CrtcStateImpls-for-all-act.patch b/0001-kms-cursor-manager-Create-CrtcStateImpls-for-all-act.patch deleted file mode 100644 index 65e90e0..0000000 --- a/0001-kms-cursor-manager-Create-CrtcStateImpls-for-all-act.patch +++ /dev/null @@ -1,58 +0,0 @@ -From af0ca0cdc2a15036ca7f0a90be374e1436c660cf Mon Sep 17 00:00:00 2001 -From: Sebastian Wick -Date: Mon, 22 Jan 2024 12:45:37 +0100 -Subject: [PATCH] kms/cursor-manager: Create CrtcStateImpls for all active - CRTCs - -even if they don't have a cursor plane. This way we can just use the -object. Updating the cursor plane then just looks at the cursor_plane -field to skips updates when there is none. - -Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3254 -Fixes: cc7bca073 ("crtc/kms: Dynamically assign primary and cursor planes") -Part-of: ---- - src/backends/native/meta-kms-cursor-manager.c | 6 ++++-- - src/backends/native/meta-renderer-native.c | 2 -- - 2 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/src/backends/native/meta-kms-cursor-manager.c b/src/backends/native/meta-kms-cursor-manager.c -index 646084877..6873000dc 100644 ---- a/src/backends/native/meta-kms-cursor-manager.c -+++ b/src/backends/native/meta-kms-cursor-manager.c -@@ -333,6 +333,10 @@ maybe_update_cursor_plane (MetaKmsCursorManagerImpl *cursor_manager_impl, - crtc_state_impl = find_crtc_state (cursor_manager_impl, crtc); - g_return_val_if_fail (crtc_state_impl, update); - -+ cursor_plane = crtc_state_impl->cursor_plane; -+ if (!cursor_plane) -+ return update; -+ - if (!crtc_state_impl->cursor_invalidated) - return update; - -@@ -368,8 +372,6 @@ maybe_update_cursor_plane (MetaKmsCursorManagerImpl *cursor_manager_impl, - meta_kms_update_realize (update, impl_device); - } - -- cursor_plane = crtc_state_impl->cursor_plane; -- - if (should_have_cursor) - { - int width, height; -diff --git a/src/backends/native/meta-renderer-native.c b/src/backends/native/meta-renderer-native.c -index 78bde68ff..dc08824c1 100644 ---- a/src/backends/native/meta-renderer-native.c -+++ b/src/backends/native/meta-renderer-native.c -@@ -1128,8 +1128,6 @@ meta_renderer_native_queue_modes_reset (MetaRendererNative *renderer_native) - crtc_kms = META_CRTC_KMS (crtc); - - kms_plane = meta_crtc_kms_get_assigned_cursor_plane (crtc_kms); -- if (!kms_plane) -- continue; - kms_crtc = meta_crtc_kms_get_kms_crtc (crtc_kms); - - clutter_stage_view_get_layout (stage_view, &view_layout); --- -2.43.0 - diff --git a/0001-window-actor-Special-case-shaped-Java-windows.patch b/0001-window-actor-Special-case-shaped-Java-windows.patch index 36d50b6..51f9ecf 100644 --- a/0001-window-actor-Special-case-shaped-Java-windows.patch +++ b/0001-window-actor-Special-case-shaped-Java-windows.patch @@ -1,4 +1,4 @@ -From 9efcc35102b4c41265e93461b35a1193b3d5822d Mon Sep 17 00:00:00 2001 +From b3b5aa01c63aee1df079e0394b0e6372df1838d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Fri, 12 May 2017 13:40:31 +0200 Subject: [PATCH] window-actor: Special-case shaped Java windows @@ -9,13 +9,15 @@ but now their compliance tests are broken. Make them happy again by special-casing shaped Java windows. --- src/compositor/meta-window-actor-x11.c | 8 ++++++++ - 1 file changed, 8 insertions(+) + src/x11/window-x11-private.h | 2 ++ + src/x11/window-x11.c | 9 +++++++++ + 3 files changed, 19 insertions(+) diff --git a/src/compositor/meta-window-actor-x11.c b/src/compositor/meta-window-actor-x11.c -index b7032e0ba..b05d5e158 100644 +index 19827af331..7d5e46ac75 100644 --- a/src/compositor/meta-window-actor-x11.c +++ b/src/compositor/meta-window-actor-x11.c -@@ -528,6 +528,14 @@ has_shadow (MetaWindowActorX11 *actor_x11) +@@ -424,6 +424,14 @@ has_shadow (MetaWindowActorX11 *actor_x11) */ if (window->has_custom_frame_extents) return FALSE; @@ -25,11 +27,44 @@ index b7032e0ba..b05d5e158 100644 + * shadows; make its compliance tests happy to give it what it wants ... + */ + if (g_strcmp0 (window->res_name, "sun-awt-X11-XWindowPeer") == 0 && -+ window->shape_region != NULL) ++ meta_window_x11_is_shaped (window)) + return FALSE; /* * Generate shadows for all other windows. +diff --git a/src/x11/window-x11-private.h b/src/x11/window-x11-private.h +index c947744ee5..cb862f0d72 100644 +--- a/src/x11/window-x11-private.h ++++ b/src/x11/window-x11-private.h +@@ -125,6 +125,8 @@ gboolean meta_window_x11_has_pointer (MetaWindow *window); + gboolean meta_window_x11_same_application (MetaWindow *window, + MetaWindow *other_window); + ++gboolean meta_window_x11_is_shaped (MetaWindow *window); ++ + void meta_window_x11_shutdown_group (MetaWindow *window); + + META_EXPORT +diff --git a/src/x11/window-x11.c b/src/x11/window-x11.c +index 745c45db18..83cdd2e420 100644 +--- a/src/x11/window-x11.c ++++ b/src/x11/window-x11.c +@@ -2585,6 +2585,15 @@ meta_window_x11_update_shape_region (MetaWindow *window) + meta_window_set_shape_region (window, region); + } + ++gboolean ++meta_window_x11_is_shaped (MetaWindow *window) ++{ ++ MetaWindowX11 *window_x11 = META_WINDOW_X11 (window); ++ MetaWindowX11Private *priv = meta_window_x11_get_instance_private (window_x11); ++ ++ return priv->shape_region != NULL; ++} ++ + /* Generally meta_window_x11_same_application() is a better idea + * of "sameness", since it handles the case where multiple apps + * want to look like the same app or the same app wants to look -- -2.23.0 +2.43.2 diff --git a/fix-i686-build.patch b/fix-i686-build.patch deleted file mode 100644 index bf38049..0000000 --- a/fix-i686-build.patch +++ /dev/null @@ -1,90 +0,0 @@ -From cf685defcd0c0026fce7ef1fc3fb79a1f1a1edaa Mon Sep 17 00:00:00 2001 -From: Sebastian Wick -Date: Mon, 8 Jan 2024 15:52:09 +0100 -Subject: [PATCH 1/2] cogl/half-float: Include SSE intrinsics - -The intel intrinsics (including SSE) are only included in the header if -the arch is x86_64 which made the i686 build fail. - -Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3234 -Fixes: 568506ecb ("cogl: Add half float implementation") ---- - cogl/cogl/cogl-half-float.c | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/cogl/cogl/cogl-half-float.c b/cogl/cogl/cogl-half-float.c -index be2c48b815..ae0af0a6a2 100644 ---- a/cogl/cogl/cogl-half-float.c -+++ b/cogl/cogl/cogl-half-float.c -@@ -31,6 +31,13 @@ - - #include - -+#if defined(__SSE__) || \ -+ (defined(_M_IX86_FP) && (_M_IX86_FP >= 1)) || \ -+ (defined(_M_X64) && !defined(_M_ARM64EC)) -+#include -+#include -+#endif -+ - #include "cogl/cogl-half-float.h" - #include "cogl/cogl-soft-float.h" - -@@ -262,3 +269,4 @@ uint16_t cogl_uint16_div_64k_to_half (uint16_t v) - - return (e << 10) | m; - } -+ --- -2.43.0 - - -From 0096860d715e1842d755b1229b43e848c26fb0cb Mon Sep 17 00:00:00 2001 -From: Sebastian Wick -Date: Mon, 8 Jan 2024 16:08:37 +0100 -Subject: [PATCH 2/2] cogl/bitmap-conversion: Don't break strict-aliasing for - flt_pack/unpack - -Simply reinterpreting the bytes differently is a strict-aliasing -violation if the type of the object isn't char or the target type of the -reinterpretation. None of that is the case here, so we have to resort to -a memcpy. - -Fixes: 60c082caa ("cogl/bitmap-conversion: Support packing fp16 formats") ---- - cogl/cogl/cogl-bitmap-conversion.c | 11 +++++++++-- - 1 file changed, 9 insertions(+), 2 deletions(-) - -diff --git a/cogl/cogl/cogl-bitmap-conversion.c b/cogl/cogl/cogl-bitmap-conversion.c -index 76efbb9bb9..08ecce6a4d 100644 ---- a/cogl/cogl/cogl-bitmap-conversion.c -+++ b/cogl/cogl/cogl-bitmap-conversion.c -@@ -45,16 +45,23 @@ typedef enum - MEDIUM_TYPE_FLOAT, - } MediumType; - -+_Static_assert (sizeof (uint32_t) == sizeof (GLfloat), -+ "GLfloat doesn't have a size of 4 bytes"); -+ - inline static uint32_t - pack_flt (GLfloat b) - { -- return *(uint32_t *) &b; -+ uint32_t ret; -+ memcpy (&ret, &b, sizeof (uint32_t)); -+ return ret; - } - - inline static GLfloat - unpack_flt (uint32_t b) - { -- return *(GLfloat *) &b; -+ GLfloat ret; -+ memcpy (&ret, &b, sizeof (GLfloat)); -+ return ret; - } - - #define CLAMP_NORM(b) (MAX (MIN ((b), 1.0), 0.0)) --- -2.43.0 - diff --git a/mutter-42.alpha-disable-tegra.patch b/mutter-42.alpha-disable-tegra.patch index 8428db9..3225c8f 100644 --- a/mutter-42.alpha-disable-tegra.patch +++ b/mutter-42.alpha-disable-tegra.patch @@ -1,25 +1,25 @@ -From 2184adca1e510361fd1c425d88ac9a3d458eb76a Mon Sep 17 00:00:00 2001 -From: David King -Date: Fri, 14 Jan 2022 18:18:03 +0000 -Subject: [PATCH] Disable KMS on tegra +From a5c67e0debaa89f7a73452560664cdc5c581ab95 Mon Sep 17 00:00:00 2001 +From: Adam Williamson +Date: Tue, 9 Mar 2021 17:21:59 -0800 +Subject: [PATCH] Test: deny atomic KMS for "tegra" (RHBZ #1936991) -Based on commit 77a40614f08ef10044409f689b9efc3d5f65ff0c. +Signed-off-by: Adam Williamson --- src/backends/native/meta-kms-impl-device-atomic.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/backends/native/meta-kms-impl-device-atomic.c b/src/backends/native/meta-kms-impl-device-atomic.c -index bcb41e8ad..bafbc7b8f 100644 +index 35837f7429..ffff7b8e23 100644 --- a/src/backends/native/meta-kms-impl-device-atomic.c +++ b/src/backends/native/meta-kms-impl-device-atomic.c -@@ -1216,6 +1216,7 @@ is_atomic_allowed (const char *driver_name) - "vboxvideo", - "virtio_gpu", +@@ -1352,6 +1352,7 @@ is_atomic_allowed (const char *driver_name) + { + const char *atomic_driver_deny_list[] = { "xlnx", + "tegra", NULL, }; -- -2.34.1 +2.43.0 diff --git a/mutter.spec b/mutter.spec index 7c0e1ac..af2efbd 100644 --- a/mutter.spec +++ b/mutter.spec @@ -13,7 +13,7 @@ %global tarball_version %%(echo %{version} | tr '~' '.') Name: mutter -Version: 46~alpha +Version: 46.0 Release: %autorelease Summary: Window and compositing manager based on Clutter @@ -30,8 +30,6 @@ Patch: mutter-42.alpha-disable-tegra.patch # https://pagure.io/fedora-workstation/issue/79 Patch: 0001-place-Always-center-initial-setup-fedora-welcome.patch -Patch: 0001-gschema-Enable-scale-monitor-framebuffer-experimenta.patch - # https://bugzilla.redhat.com/show_bug.cgi?id=2239128 # https://gitlab.gnome.org/GNOME/mutter/-/issues/3068 # not upstreamed because for upstream we'd really want to find a way @@ -44,13 +42,6 @@ Patch: 0001-Revert-x11-Use-input-region-from-frame-window-for-de.patch # which solves the problems reported with #3329 alone Patch: 0001-modified-3329.patch -# https://bugzilla.redhat.com/show_bug.cgi?id=2261842 -# https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3539 -# fixes failure to show anything on virtio-vga without 3D acceleration -Patch: 0001-kms-cursor-manager-Create-CrtcStateImpls-for-all-act.patch - -Patch: fix-i686-build.patch - BuildRequires: pkgconfig(gobject-introspection-1.0) >= 1.41.0 BuildRequires: pkgconfig(sm) BuildRequires: pkgconfig(libwacom) @@ -106,6 +97,8 @@ BuildRequires: pkgconfig(json-glib-1.0) >= %{json_glib_version} BuildRequires: pkgconfig(libinput) >= %{libinput_version} BuildRequires: pkgconfig(xwayland) +BuildRequires: python3-dbusmock + Requires: control-center-filesystem Requires: gsettings-desktop-schemas%{?_isa} >= %{gsettings_desktop_schemas_version} Requires: gnome-settings-daemon @@ -178,7 +171,7 @@ the functionality of the installed %{name} package. %autosetup -S git -n %{name}-%{tarball_version} %build -%meson -Degl_device=true -Dwayland_eglstream=true +%meson -Degl_device=true -Dwayland_eglstream=true -Dlibdisplay_info=disabled %meson_build %install diff --git a/sources b/sources index b0ac860..0114b69 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (mutter-46.alpha.tar.xz) = 69e48eda7e93dfbd6ea96271eeeadc9c702b8db2b450aa5b5adcfed8321b36650c27b7f1e72ad74967c33f1c7236749c3f63c441d8e3053c8ac46437753445a2 +SHA512 (mutter-46.0.tar.xz) = 0314183f763b609105f42233f19507eed14f9a8fab4b0985e966ab208d03a22b600e7a4ab3f6a190a5704abcea663ae1a0cf2394eb42a6c076b7a558ef51eacc