import CS mutter-40.9-28.el9
This commit is contained in:
parent
6208210bb9
commit
9566b3d221
@ -0,0 +1,38 @@
|
||||
From 5471f40995b71cf838951a9e2fb2672e64aec66d Mon Sep 17 00:00:00 2001
|
||||
From: rpm-build <rpm-build>
|
||||
Date: Thu, 24 Apr 2025 16:41:32 +0200
|
||||
Subject: [PATCH] backends: Avoid disabling touchscreen outside of touch mode
|
||||
|
||||
The reasons to disable touchscreen on dpms off apply mostly to
|
||||
devices where the touch mode is useful, and not so much outside of
|
||||
those.
|
||||
---
|
||||
src/backends/meta-input-mapper.c | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/src/backends/meta-input-mapper.c b/src/backends/meta-input-mapper.c
|
||||
index a0a4b8a..a8d7a10 100644
|
||||
--- a/src/backends/meta-input-mapper.c
|
||||
+++ b/src/backends/meta-input-mapper.c
|
||||
@@ -695,6 +695,7 @@ input_mapper_power_save_mode_changed_cb (MetaMonitorManager *monitor_manager,
|
||||
{
|
||||
ClutterInputDevice *device;
|
||||
MetaLogicalMonitor *logical_monitor;
|
||||
+ ClutterSeat *seat;
|
||||
MetaMonitor *builtin;
|
||||
MetaPowerSave power_save_mode;
|
||||
gboolean on;
|
||||
@@ -718,6 +719,10 @@ input_mapper_power_save_mode_changed_cb (MetaMonitorManager *monitor_manager,
|
||||
if (!device)
|
||||
return;
|
||||
|
||||
+ seat = clutter_input_device_get_seat (device);
|
||||
+ if (!clutter_seat_get_touch_mode (seat))
|
||||
+ return;
|
||||
+
|
||||
g_signal_emit (mapper, signals[DEVICE_ENABLED], 0, device, on);
|
||||
}
|
||||
|
||||
--
|
||||
2.49.0
|
||||
|
||||
@ -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
|
||||
|
||||
@ -0,0 +1,104 @@
|
||||
From 9a9d5744143846f2fbc5da983070592217a344eb Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Wick <sebastian.wick@redhat.com>
|
||||
Date: Fri, 28 Jan 2022 15:49:11 +0100
|
||||
Subject: [PATCH 1/3] xwayland: Relax the ownership requirements of
|
||||
/tmp/.X11-unix
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
The `ensure_x11_unix_perms` function tries to detect systems on which
|
||||
/tmp/.X11-unix is owned by neither root nor ourselves because in that
|
||||
case the owner can take over the socket we create (symlink races are
|
||||
fixed in linux 800179c9b8a1e796e441674776d11cd4c05d61d7). This should
|
||||
not be possible in the first place and systems should come with some way
|
||||
to ensure that's the case (systemd-tmpfiles, polyinstantiationm …). That
|
||||
check however only works if we see the root user namespace which might
|
||||
not be the case when running in e.g. toolbx.
|
||||
|
||||
This change relaxes the requirements such that in the root user
|
||||
namespace we detect and abort if a vulnerable system is detected but
|
||||
unconditionally run in toolbx.
|
||||
|
||||
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2261>
|
||||
(cherry picked from commit abadb291325e003c4afa054437303ee5b66af8a0)
|
||||
---
|
||||
src/wayland/meta-xwayland.c | 34 +++++++++++++++++++++++++++-------
|
||||
1 file changed, 27 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/src/wayland/meta-xwayland.c b/src/wayland/meta-xwayland.c
|
||||
index c5a9303df9..2ca555ad65 100644
|
||||
--- a/src/wayland/meta-xwayland.c
|
||||
+++ b/src/wayland/meta-xwayland.c
|
||||
@@ -59,6 +59,7 @@
|
||||
#define XWAYLAND_LISTENFD "-listen"
|
||||
#endif
|
||||
|
||||
+#define TMP_UNIX_DIR "/tmp"
|
||||
#define X11_TMP_UNIX_DIR "/tmp/.X11-unix"
|
||||
#define X11_TMP_UNIX_PATH "/tmp/.X11-unix/X"
|
||||
|
||||
@@ -651,9 +652,18 @@ meta_xwayland_override_display_number (int number)
|
||||
static gboolean
|
||||
ensure_x11_unix_perms (GError **error)
|
||||
{
|
||||
- struct stat buf;
|
||||
-
|
||||
- if (lstat (X11_TMP_UNIX_DIR, &buf) != 0)
|
||||
+ /* Try to detect systems on which /tmp/.X11-unix is owned by neither root nor
|
||||
+ * ourselves because in that case the owner can take over the socket we create
|
||||
+ * (symlink races are fixed in linux 800179c9b8a1). This should not be
|
||||
+ * possible in the first place and systems should come with some way to ensure
|
||||
+ * that's the case (systemd-tmpfiles, polyinstantiation …).
|
||||
+ *
|
||||
+ * That check however only works if we see the root user namespace which might
|
||||
+ * not be the case when running in e.g. toolbx (root and other user are all
|
||||
+ * mapped to overflowuid). */
|
||||
+ struct stat x11_tmp, tmp;
|
||||
+
|
||||
+ if (lstat (X11_TMP_UNIX_DIR, &x11_tmp) != 0)
|
||||
{
|
||||
g_set_error (error, G_IO_ERROR, g_io_error_from_errno (errno),
|
||||
"Failed to check permissions on directory \"%s\": %s",
|
||||
@@ -661,8 +671,18 @@ ensure_x11_unix_perms (GError **error)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
- /* If the directory already exists, it should belong to root or ourselves ... */
|
||||
- if (buf.st_uid != 0 && buf.st_uid != getuid ())
|
||||
+ if (lstat (TMP_UNIX_DIR, &tmp) != 0)
|
||||
+ {
|
||||
+ g_set_error (error, G_IO_ERROR, g_io_error_from_errno (errno),
|
||||
+ "Failed to check permissions on directory \"%s\": %s",
|
||||
+ TMP_UNIX_DIR, g_strerror (errno));
|
||||
+ return FALSE;
|
||||
+ }
|
||||
+
|
||||
+ /* If the directory already exists, it should belong to the same
|
||||
+ * user as /tmp or belong to ourselves ...
|
||||
+ * (if /tmp is not owned by root or ourselves we're in deep trouble) */
|
||||
+ if (x11_tmp.st_uid != tmp.st_uid && x11_tmp.st_uid != getuid ())
|
||||
{
|
||||
g_set_error (error, G_IO_ERROR, G_IO_ERROR_PERMISSION_DENIED,
|
||||
"Wrong ownership for directory \"%s\"",
|
||||
@@ -671,7 +691,7 @@ ensure_x11_unix_perms (GError **error)
|
||||
}
|
||||
|
||||
/* ... be writable ... */
|
||||
- if ((buf.st_mode & 0022) != 0022)
|
||||
+ if ((x11_tmp.st_mode & 0022) != 0022)
|
||||
{
|
||||
g_set_error (error, G_IO_ERROR, G_IO_ERROR_PERMISSION_DENIED,
|
||||
"Directory \"%s\" is not writable",
|
||||
@@ -680,7 +700,7 @@ ensure_x11_unix_perms (GError **error)
|
||||
}
|
||||
|
||||
/* ... and have the sticky bit set */
|
||||
- if ((buf.st_mode & 01000) != 01000)
|
||||
+ if ((x11_tmp.st_mode & 01000) != 01000)
|
||||
{
|
||||
g_set_error (error, G_IO_ERROR, G_IO_ERROR_PERMISSION_DENIED,
|
||||
"Directory \"%s\" is missing the sticky bit",
|
||||
--
|
||||
2.50.0
|
||||
|
||||
@ -0,0 +1,31 @@
|
||||
From 1a5015dff70c2465e0a8a3df77ace8f0fbb3b20a Mon Sep 17 00:00:00 2001
|
||||
From: Nathan Pratta Teodosio <nathan.teodosio@canonical.com>
|
||||
Date: Thu, 29 Aug 2024 09:25:13 +0200
|
||||
Subject: [PATCH 2/3] Be more verbose about permissions of /tmp/{,.X11-unix}.
|
||||
|
||||
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3984>
|
||||
(cherry picked from commit 4dbaa8178116649076bf542a5eaf42d4ce804e5b)
|
||||
---
|
||||
src/wayland/meta-xwayland.c | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/wayland/meta-xwayland.c b/src/wayland/meta-xwayland.c
|
||||
index 2ca555ad65..7db122e8da 100644
|
||||
--- a/src/wayland/meta-xwayland.c
|
||||
+++ b/src/wayland/meta-xwayland.c
|
||||
@@ -685,8 +685,10 @@ ensure_x11_unix_perms (GError **error)
|
||||
if (x11_tmp.st_uid != tmp.st_uid && x11_tmp.st_uid != getuid ())
|
||||
{
|
||||
g_set_error (error, G_IO_ERROR, G_IO_ERROR_PERMISSION_DENIED,
|
||||
- "Wrong ownership for directory \"%s\"",
|
||||
- X11_TMP_UNIX_DIR);
|
||||
+ "Wrong ownership for directory \"%s\", owned by %d but "
|
||||
+ "should be same as %s (owned by (%d)) or %d",
|
||||
+ X11_TMP_UNIX_DIR, x11_tmp.st_uid, TMP_UNIX_DIR, tmp.st_uid,
|
||||
+ getuid ());
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
--
|
||||
2.50.0
|
||||
|
||||
@ -0,0 +1,34 @@
|
||||
From 58652bcf5fc379fd07d2cf9cc2b23d469df33f20 Mon Sep 17 00:00:00 2001
|
||||
From: Nathan Pratta Teodosio <nathan.teodosio@canonical.com>
|
||||
Date: Fri, 13 Jun 2025 11:24:24 +0200
|
||||
Subject: [PATCH 3/3] Use 'access' instead of checking permission modes for
|
||||
/tmp/.X11-unix/.
|
||||
|
||||
The previous version was missing the 200 case with the directory owned by the
|
||||
current user.
|
||||
|
||||
C.f. https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7857,
|
||||
https://launchpad.net/bugs/2069564.
|
||||
|
||||
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3984>
|
||||
(cherry picked from commit 36ca36b48e7efd6846fac7533a4f2e97959a8ad6)
|
||||
---
|
||||
src/wayland/meta-xwayland.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/wayland/meta-xwayland.c b/src/wayland/meta-xwayland.c
|
||||
index 7db122e8da..c2e094e43c 100644
|
||||
--- a/src/wayland/meta-xwayland.c
|
||||
+++ b/src/wayland/meta-xwayland.c
|
||||
@@ -693,7 +693,7 @@ ensure_x11_unix_perms (GError **error)
|
||||
}
|
||||
|
||||
/* ... be writable ... */
|
||||
- if ((x11_tmp.st_mode & 0022) != 0022)
|
||||
+ if (access (X11_TMP_UNIX_DIR, W_OK) != 0)
|
||||
{
|
||||
g_set_error (error, G_IO_ERROR, G_IO_ERROR_PERMISSION_DENIED,
|
||||
"Directory \"%s\" is not writable",
|
||||
--
|
||||
2.50.0
|
||||
|
||||
295
SOURCES/fix-cogl-framebuffer-get-bits-test.patch
Normal file
295
SOURCES/fix-cogl-framebuffer-get-bits-test.patch
Normal file
@ -0,0 +1,295 @@
|
||||
From 03c65a2bce1f021c8c387cc5ed7e8c14c18a29f5 Mon Sep 17 00:00:00 2001
|
||||
From: Olivier Fourdan <ofourdan@redhat.com>
|
||||
Date: Fri, 2 Jun 2023 14:42:51 +0200
|
||||
Subject: [PATCH 1/5] cogl/gl-framebuffer: Fix spurious trailing spaces
|
||||
|
||||
Purely cosmetic fix, no functional change.
|
||||
|
||||
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3047>
|
||||
(cherry picked from commit 5a83e8ef8250526a40e8e69c6398f990ab482b2f)
|
||||
---
|
||||
cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c | 12 ++++++------
|
||||
cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c | 12 ++++++------
|
||||
2 files changed, 12 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c b/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
|
||||
index d6609bb207..8d76f1578b 100644
|
||||
--- a/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
|
||||
+++ b/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
|
||||
@@ -72,32 +72,32 @@ ensure_bits_initialized (CoglGlFramebufferBack *gl_framebuffer_back)
|
||||
GLenum attachment, pname;
|
||||
size_t offset;
|
||||
} params[] = {
|
||||
- {
|
||||
+ {
|
||||
.attachment = GL_BACK_LEFT,
|
||||
.pname = GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE,
|
||||
.offset = offsetof (CoglFramebufferBits, red),
|
||||
},
|
||||
- {
|
||||
+ {
|
||||
.attachment = GL_BACK_LEFT,
|
||||
.pname = GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE,
|
||||
.offset = offsetof (CoglFramebufferBits, green),
|
||||
},
|
||||
- {
|
||||
+ {
|
||||
.attachment = GL_BACK_LEFT,
|
||||
.pname = GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE,
|
||||
.offset = offsetof (CoglFramebufferBits, blue),
|
||||
},
|
||||
- {
|
||||
+ {
|
||||
.attachment = GL_BACK_LEFT,
|
||||
.pname = GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE,
|
||||
.offset = offsetof (CoglFramebufferBits, alpha),
|
||||
},
|
||||
- {
|
||||
+ {
|
||||
.attachment = GL_DEPTH,
|
||||
.pname = GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE,
|
||||
.offset = offsetof (CoglFramebufferBits, depth),
|
||||
},
|
||||
- {
|
||||
+ {
|
||||
.attachment = GL_STENCIL,
|
||||
.pname = GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE,
|
||||
.offset = offsetof (CoglFramebufferBits, stencil),
|
||||
diff --git a/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c b/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
|
||||
index c8db6a23a2..1ffc1d5350 100644
|
||||
--- a/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
|
||||
+++ b/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
|
||||
@@ -82,32 +82,32 @@ ensure_bits_initialized (CoglGlFramebufferFbo *gl_framebuffer_fbo)
|
||||
GLenum attachment, pname;
|
||||
size_t offset;
|
||||
} params[] = {
|
||||
- {
|
||||
+ {
|
||||
.attachment = GL_COLOR_ATTACHMENT0,
|
||||
.pname = GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE,
|
||||
.offset = offsetof (CoglFramebufferBits, red),
|
||||
},
|
||||
- {
|
||||
+ {
|
||||
.attachment = GL_COLOR_ATTACHMENT0,
|
||||
.pname = GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE,
|
||||
.offset = offsetof (CoglFramebufferBits, green),
|
||||
},
|
||||
- {
|
||||
+ {
|
||||
.attachment = GL_COLOR_ATTACHMENT0,
|
||||
.pname = GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE,
|
||||
.offset = offsetof (CoglFramebufferBits, blue),
|
||||
},
|
||||
- {
|
||||
+ {
|
||||
.attachment = GL_COLOR_ATTACHMENT0,
|
||||
.pname = GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE,
|
||||
.offset = offsetof (CoglFramebufferBits, alpha),
|
||||
},
|
||||
- {
|
||||
+ {
|
||||
.attachment = GL_DEPTH_ATTACHMENT,
|
||||
.pname = GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE,
|
||||
.offset = offsetof (CoglFramebufferBits, depth),
|
||||
},
|
||||
- {
|
||||
+ {
|
||||
.attachment = GL_STENCIL_ATTACHMENT,
|
||||
.pname = GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE,
|
||||
.offset = offsetof (CoglFramebufferBits, stencil),
|
||||
--
|
||||
2.49.0
|
||||
|
||||
|
||||
From deee9d15b7f8e9595e10e43e815c585b42396f07 Mon Sep 17 00:00:00 2001
|
||||
From: Olivier Fourdan <ofourdan@redhat.com>
|
||||
Date: Fri, 2 Jun 2023 11:54:58 +0200
|
||||
Subject: [PATCH 2/5] cogl/gl-framebuffer: Fix inverted test in
|
||||
ensure_bits_initialized()
|
||||
|
||||
Cogl's feature COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS is required
|
||||
to use the GL_FRAMEBUFFER_ATTACHMENT_* queries.
|
||||
|
||||
Unfortunately, the test for the availability of the private feature is
|
||||
actually inverted in ensure_bits_initialized() which causes that whole
|
||||
portion of code to be ignored, falling back to the glGetIntegerv()
|
||||
method which isn't supported in core profiles.
|
||||
|
||||
As Mesa has recently started to be more strict about these, this causes
|
||||
the CI tests to fail in mutter.
|
||||
|
||||
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3047>
|
||||
(cherry picked from commit a2203df9f43b9e501a972d23b3d5584005c03ce6)
|
||||
---
|
||||
cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c b/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
|
||||
index 1ffc1d5350..75a8b0c1fe 100644
|
||||
--- a/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
|
||||
+++ b/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
|
||||
@@ -76,7 +76,7 @@ ensure_bits_initialized (CoglGlFramebufferFbo *gl_framebuffer_fbo)
|
||||
COGL_FRAMEBUFFER_STATE_BIND);
|
||||
|
||||
#ifdef HAVE_COGL_GL
|
||||
- if (!_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS))
|
||||
+ if (_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS))
|
||||
{
|
||||
const struct {
|
||||
GLenum attachment, pname;
|
||||
--
|
||||
2.49.0
|
||||
|
||||
|
||||
From a40d29a51382591d8e319af0b448d57510dacc86 Mon Sep 17 00:00:00 2001
|
||||
From: Olivier Fourdan <ofourdan@redhat.com>
|
||||
Date: Mon, 5 Jun 2023 10:31:38 +0200
|
||||
Subject: [PATCH 3/5] cogl/gl-framebuffer: Match testing features
|
||||
|
||||
The function ensure_bits_initialized() in cogl-gl-framebuffer-fbo.c
|
||||
checks for COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS whereas the same
|
||||
in cogl-gl-framebuffer-back.c simply checks for the driver being
|
||||
COGL_DRIVER_GL3.
|
||||
|
||||
Change the later to use the COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS
|
||||
flag as well.
|
||||
|
||||
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3047>
|
||||
(cherry picked from commit fad240f437d6b11f664c9c09aecabe5f5e703eca)
|
||||
---
|
||||
cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c b/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
|
||||
index 8d76f1578b..f6a17e8f07 100644
|
||||
--- a/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
|
||||
+++ b/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
|
||||
@@ -66,7 +66,7 @@ ensure_bits_initialized (CoglGlFramebufferBack *gl_framebuffer_back)
|
||||
COGL_FRAMEBUFFER_STATE_BIND);
|
||||
|
||||
#ifdef HAVE_COGL_GL
|
||||
- if (ctx->driver == COGL_DRIVER_GL3)
|
||||
+ if (_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS))
|
||||
{
|
||||
const struct {
|
||||
GLenum attachment, pname;
|
||||
--
|
||||
2.49.0
|
||||
|
||||
|
||||
From 2d183a8254fb3de388db78d53c282416add20905 Mon Sep 17 00:00:00 2001
|
||||
From: Olivier Fourdan <ofourdan@redhat.com>
|
||||
Date: Fri, 2 Jun 2023 14:27:29 +0200
|
||||
Subject: [PATCH 4/5] cogl/gl-framebuffer: Fail without QUERY_FRAMEBUFFER_BITS
|
||||
|
||||
glGetIntegerv() with GL_RED_BITS/GL_GREEN_BITS/GL_BLUE_BITS/etc. is not
|
||||
supported with the GL core context, so there is no point in falling back
|
||||
to that without supporting COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS,
|
||||
as this will cause an GL error.
|
||||
|
||||
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3047>
|
||||
(cherry picked from commit c3af4c1b1571b05f67d48b90d9ea7313f3ca6003)
|
||||
---
|
||||
cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c | 7 +------
|
||||
cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c | 7 +------
|
||||
2 files changed, 2 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c b/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
|
||||
index f6a17e8f07..0ccd232407 100644
|
||||
--- a/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
|
||||
+++ b/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
|
||||
@@ -119,12 +119,7 @@ ensure_bits_initialized (CoglGlFramebufferBack *gl_framebuffer_back)
|
||||
else
|
||||
#endif /* HAVE_COGL_GL */
|
||||
{
|
||||
- GE (ctx, glGetIntegerv (GL_RED_BITS, &bits->red));
|
||||
- GE (ctx, glGetIntegerv (GL_GREEN_BITS, &bits->green));
|
||||
- GE (ctx, glGetIntegerv (GL_BLUE_BITS, &bits->blue));
|
||||
- GE (ctx, glGetIntegerv (GL_ALPHA_BITS, &bits->alpha));
|
||||
- GE (ctx, glGetIntegerv (GL_DEPTH_BITS, &bits->depth));
|
||||
- GE (ctx, glGetIntegerv (GL_STENCIL_BITS, &bits->stencil));
|
||||
+ return FALSE;
|
||||
}
|
||||
|
||||
COGL_NOTE (FRAMEBUFFER,
|
||||
diff --git a/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c b/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
|
||||
index 75a8b0c1fe..524196207f 100644
|
||||
--- a/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
|
||||
+++ b/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
|
||||
@@ -129,12 +129,7 @@ ensure_bits_initialized (CoglGlFramebufferFbo *gl_framebuffer_fbo)
|
||||
else
|
||||
#endif /* HAVE_COGL_GL */
|
||||
{
|
||||
- GE (ctx, glGetIntegerv (GL_RED_BITS, &bits->red));
|
||||
- GE (ctx, glGetIntegerv (GL_GREEN_BITS, &bits->green));
|
||||
- GE (ctx, glGetIntegerv (GL_BLUE_BITS, &bits->blue));
|
||||
- GE (ctx, glGetIntegerv (GL_ALPHA_BITS, &bits->alpha));
|
||||
- GE (ctx, glGetIntegerv (GL_DEPTH_BITS, &bits->depth));
|
||||
- GE (ctx, glGetIntegerv (GL_STENCIL_BITS, &bits->stencil));
|
||||
+ return FALSE;
|
||||
}
|
||||
|
||||
if (!_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_ALPHA_TEXTURES) &&
|
||||
--
|
||||
2.49.0
|
||||
|
||||
|
||||
From 9b91892b5a14cc975e8f219fbad0548e017535b7 Mon Sep 17 00:00:00 2001
|
||||
From: Olivier Fourdan <ofourdan@redhat.com>
|
||||
Date: Mon, 5 Jun 2023 10:38:41 +0200
|
||||
Subject: [PATCH 5/5] cogl/gl-framebuffer: Remove conditional on HAVE_COGL_GL
|
||||
|
||||
By testing the features flag, we can get rid of the conditional build
|
||||
on HAVE_COGL_GL entirely.
|
||||
|
||||
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3047>
|
||||
(cherry picked from commit d65883e0d7d70987e3888b86222b109c35f5a7a2)
|
||||
---
|
||||
cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c | 2 --
|
||||
cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c | 2 --
|
||||
2 files changed, 4 deletions(-)
|
||||
|
||||
diff --git a/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c b/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
|
||||
index 0ccd232407..94154d48ef 100644
|
||||
--- a/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
|
||||
+++ b/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
|
||||
@@ -65,7 +65,6 @@ ensure_bits_initialized (CoglGlFramebufferBack *gl_framebuffer_back)
|
||||
framebuffer,
|
||||
COGL_FRAMEBUFFER_STATE_BIND);
|
||||
|
||||
-#ifdef HAVE_COGL_GL
|
||||
if (_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS))
|
||||
{
|
||||
const struct {
|
||||
@@ -117,7 +116,6 @@ ensure_bits_initialized (CoglGlFramebufferBack *gl_framebuffer_back)
|
||||
}
|
||||
}
|
||||
else
|
||||
-#endif /* HAVE_COGL_GL */
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
diff --git a/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c b/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
|
||||
index 524196207f..3ea133d314 100644
|
||||
--- a/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
|
||||
+++ b/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
|
||||
@@ -75,7 +75,6 @@ ensure_bits_initialized (CoglGlFramebufferFbo *gl_framebuffer_fbo)
|
||||
framebuffer,
|
||||
COGL_FRAMEBUFFER_STATE_BIND);
|
||||
|
||||
-#ifdef HAVE_COGL_GL
|
||||
if (_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS))
|
||||
{
|
||||
const struct {
|
||||
@@ -127,7 +126,6 @@ ensure_bits_initialized (CoglGlFramebufferFbo *gl_framebuffer_fbo)
|
||||
}
|
||||
}
|
||||
else
|
||||
-#endif /* HAVE_COGL_GL */
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
--
|
||||
2.49.0
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
|
||||
Name: mutter
|
||||
Version: 40.9
|
||||
Release: 24%{?dist}
|
||||
Release: 28%{?dist}
|
||||
Summary: Window and compositing manager based on Clutter
|
||||
|
||||
License: GPLv2+
|
||||
@ -152,6 +152,22 @@ Patch66: 0001-backend-native-Use-drmModeCloseFB-for-flicker-free-l.patch
|
||||
# RHEL-21286
|
||||
Patch67: double-key-event-handling.patch
|
||||
|
||||
# RHEL-31742
|
||||
Patch68: 0001-backends-Avoid-disabling-touchscreen-outside-of-touc.patch
|
||||
|
||||
# RHEL-90588
|
||||
# https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2261
|
||||
Patch69: 0001-xwayland-Relax-the-ownership-requirements-of-tmp-.X1.patch
|
||||
# https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3984
|
||||
Patch70: 0002-Be-more-verbose-about-permissions-of-tmp-.X11-unix.patch
|
||||
Patch71: 0003-Use-access-instead-of-checking-permission-modes-for-.patch
|
||||
|
||||
# RHEL-4521
|
||||
Patch72: fix-cogl-framebuffer-get-bits-test.patch
|
||||
|
||||
# RHEL-89352
|
||||
Patch73: 0001-compositor-x11-sync-again-at-the-end-of-before_paint.patch
|
||||
|
||||
BuildRequires: chrpath
|
||||
BuildRequires: pango-devel
|
||||
BuildRequires: startup-notification-devel
|
||||
@ -299,6 +315,22 @@ desktop-file-validate %{buildroot}/%{_datadir}/applications/%{name}.desktop
|
||||
%{_datadir}/mutter-%{mutter_api_version}/tests
|
||||
|
||||
%changelog
|
||||
* Tue Jul 01 2025 Jan Grulich <jgrulich@redhat.com> - 40.9-28
|
||||
- Backport fix for screen not refreshing properly
|
||||
Resolves: RHEL-89352
|
||||
|
||||
* Fri Jun 27 2025 Jonas Ådahl <jadahl@redhat.com> - 40.9-27
|
||||
- Backport fixes for cogl OpenGL conformance
|
||||
Resolves: RHEL-4521
|
||||
|
||||
* Mon May 12 2025 Olivier Fourdan <ofourdan@redhat.com> - 40.9-26
|
||||
- Fix polyinstantiation preventing Xwayland to start
|
||||
Resolves: RHEL-90588
|
||||
|
||||
* Thu Apr 24 2025 Carlos Garnacho <cgarnach@redhat.com> - 40.9-25
|
||||
- Do not disable touchscreen on DPMS off if touch-mode is disabled
|
||||
Resolves: RHEL-31742
|
||||
|
||||
* Tue Jan 28 2025 Carlos Garnacho <cgarnach@redhat.com> - 40.9-24
|
||||
- Fix stuck modifier keys
|
||||
Resolves: RHEL-21286
|
||||
|
||||
Loading…
Reference in New Issue
Block a user