import OL mutter-40.9-25.el9_6.1

This commit is contained in:
Andrew Lukoshko 2025-08-07 10:58:38 +00:00
parent 04f08af1b3
commit 54787f40cc
3 changed files with 160 additions and 3 deletions

View File

@ -0,0 +1,51 @@
From d71294da2282fe9a82cc8661d3110c8020a5069a Mon Sep 17 00:00:00 2001
From: Jocelyn Falempe <jfalempe@redhat.com>
Date: Wed, 13 Mar 2024 15:34:14 +0100
Subject: [PATCH] backend/native: Use drmModeCloseFB for flicker-free login
When logging in from gdm to gnome, the main plane is deactivated, and
leads to the screen going blank before gnome is able to enable it
again.
Using the new CloseFB ioctl, allows to keep the gdm login screen
displayed until gnome-shell replace it.
Signed-off-by: Jocelyn Falempe <jfalempe@redhat.com>
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3659>
(cherry picked from commit a775241efd8b840e7789077fb2224f0df2361d54)
---
meson.build | 3 ++-
src/backends/native/meta-drm-buffer.c | 4 +++-
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/meson.build b/meson.build
index 613aa67792..0c342ed335 100644
--- a/meson.build
+++ b/meson.build
@@ -45,7 +45,8 @@ wayland_protocols_req = '>= 1.19'
# native backend version requirements
libinput_req = '>= 1.15.0'
-gbm_req = '>= 17.3'
+gbm_req = '>= 21.3'
+libdrm_req = '>= 2.4.118'
# screen cast version requirements
libpipewire_req = '>= 0.3.21'
diff --git a/src/backends/native/meta-drm-buffer.c b/src/backends/native/meta-drm-buffer.c
index a0f8055b31..c650484552 100644
--- a/src/backends/native/meta-drm-buffer.c
+++ b/src/backends/native/meta-drm-buffer.c
@@ -211,7 +211,9 @@ rm_fb_in_impl (MetaKmsImpl *impl,
int ret;
fd = meta_kms_impl_device_get_fd (impl_device);
- ret = drmModeRmFB (fd, fb_id);
+ ret = drmModeCloseFB (fd, fb_id);
+ if (ret == -EINVAL)
+ ret = drmModeRmFB (fd, fb_id);
if (ret != 0)
g_warning ("drmModeRmFB: %s", g_strerror (-ret));
--
2.44.0.501.g19981daefd.dirty

View File

@ -0,0 +1,85 @@
From f606a4424a5afc71672566b15f56971bfb7fa4db Mon Sep 17 00:00:00 2001
From: Daniel van Vugt <daniel.van.vugt@canonical.com>
Date: Fri, 16 Feb 2024 16:57:55 +0800
Subject: [PATCH] compositor/x11: Sync again at the end of before_paint
The existing comment tells us this is necessary:
> there may be drawing between the last damage event and the
> XDamageSubtract() that needs to be flushed as well.
But the commit message for 551101c65cda also tells us that
synchronization is necessary before-update. Assuming both are correct
then it needs to be done in both places.
I did try optimizing out the second sync to only do it if damage
arrived during the update, but that doesn't seem to be the issue.
The damage event is arriving before the update starts and it's some
secondary changes within the damage region running late that need
flushing. So this means the client is reporting damage more frequently
than the frame rate and we're ignoring the secondary damage reports
for efficiency (XDamageReportBoundingBox), which is still a good thing.
Fixes: 551101c65cda ("compositor-x11: Move synchronization to before-update")
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/2880
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3590>
---
src/compositor/meta-compositor-x11.c | 30 ++++++++++++++++++++++++----
1 file changed, 26 insertions(+), 4 deletions(-)
diff --git a/src/compositor/meta-compositor-x11.c b/src/compositor/meta-compositor-x11.c
index 1d0ba4c..8bfd4c1 100644
--- a/src/compositor/meta-compositor-x11.c
+++ b/src/compositor/meta-compositor-x11.c
@@ -326,9 +326,7 @@ out:
}
static void
-on_before_update (ClutterStage *stage,
- ClutterStageView *stage_view,
- MetaCompositor *compositor)
+maybe_do_sync (MetaCompositor *compositor)
{
MetaCompositorX11 *compositor_x11 = META_COMPOSITOR_X11 (compositor);
@@ -363,6 +361,14 @@ on_before_update (ClutterStage *stage,
}
}
+static void
+on_before_update (ClutterStage *stage,
+ ClutterStageView *stage_view,
+ MetaCompositor *compositor)
+{
+ maybe_do_sync (compositor);
+}
+
static void
on_after_update (ClutterStage *stage,
ClutterStageView *stage_view,
@@ -390,6 +396,22 @@ meta_compositor_x11_before_paint (MetaCompositor *compositor,
parent_class = META_COMPOSITOR_CLASS (meta_compositor_x11_parent_class);
parent_class->before_paint (compositor, stage_view);
+
+ /* We must sync after MetaCompositor's before_paint because that's the final
+ * time XDamageSubtract may happen before painting (when it calls
+ * meta_window_actor_x11_before_paint -> handle_updates ->
+ * meta_surface_actor_x11_handle_updates). If a client was to redraw between
+ * the last damage event and XDamageSubtract, and the bounding box of the
+ * region didn't grow, then we will not receive a new damage report for it
+ * (because XDamageReportBoundingBox). Then if we haven't synchronized again
+ * and the same region doesn't change on subsequent frames, we have lost some
+ * part of the update from the client. So to ensure the correct pixels get
+ * composited we must sync at least once between XDamageSubtract and
+ * compositing, which is here. More related documentation can be found in
+ * maybe_do_sync.
+ */
+
+ maybe_do_sync (compositor);
}
static void
--
GitLab

View File

@ -10,7 +10,7 @@
Name: mutter
Version: 40.9
Release: 23%{?dist}
Release: 25%{?dist}.1
Summary: Window and compositing manager based on Clutter
License: GPLv2+
@ -146,7 +146,14 @@ Patch63: 0003-window-Unregister-cgroup-on-unmanage.patch
Patch64: 0004-window-Don-t-use-cgroup-workspace-if-there-already-i.patch
Patch65: 0005-cgroup-Get-app-info-from-gnome-shell-when-possible.patch
Patch66: double-key-event-handling.patch
# RHEL-10895
Patch66: 0001-backend-native-Use-drmModeCloseFB-for-flicker-free-l.patch
# RHEL-21286
Patch67: double-key-event-handling.patch
# RHEL-101894
Patch68: 0001-compositor-x11-sync-again-at-the-end-of-before_paint.patch
BuildRequires: chrpath
BuildRequires: pango-devel
@ -295,8 +302,22 @@ desktop-file-validate %{buildroot}/%{_datadir}/applications/%{name}.desktop
%{_datadir}/mutter-%{mutter_api_version}/tests
%changelog
* Tue Mar 18 2025 Eduard Abdullin <eabdullin@almalinux.org> - 40.9-23
* Fri Jul 08 2025 Tomas Pelka <tpelka@redhat.com> - 40.9-25
- Bumping the release and rebuilding in correct build target
- Backport fix for screen not refreshing properly
Resolves: RHEL-101894
* Fri Jul 04 2025 Jonas Ådahl <jadahl@redhat.com> - 40.9-25
- Backport fix for screen not refreshing properly
Resolves: RHEL-101894
* Tue Jan 28 2025 Carlos Garnacho <cgarnach@redhat.com> - 40.9-24
- Fix stuck modifier keys
Resolves: RHEL-21286
* Fri Nov 01 2024 Jonas Ådahl <jadahl@redhat.com> - 40.9-23
- Backport fix for flicker-free login
Resolves: RHEL-10895
* Fri Oct 18 2024 Jonas Ådahl <jadahl@redhat.com> - 40.9-22
- Fix crash when moving window while switching workspace