From 25c8c04b44c0866b93c975b4f5dc7d2d8cd30cad Mon Sep 17 00:00:00 2001 From: fossdd Date: Tue, 18 Mar 2025 23:29:56 +0100 Subject: [PATCH] systemd/mutter: upgrade to 48.0 Part-of: https://gitlab.postmarketos.org/postmarketos/pmaports/-/merge_requests/6337 [ci:skip-build]: already built successfully in CI --- extra-repos/systemd/mutter/APKBUILD | 12 ++- extra-repos/systemd/mutter/fix-freeze.patch | 99 ++++++++++++++++++++ extra-repos/systemd/mutter/fixudev-req.patch | 6 +- 3 files changed, 110 insertions(+), 7 deletions(-) create mode 100644 extra-repos/systemd/mutter/fix-freeze.patch diff --git a/extra-repos/systemd/mutter/APKBUILD b/extra-repos/systemd/mutter/APKBUILD index 2f31ad3c9..ed348ed95 100644 --- a/extra-repos/systemd/mutter/APKBUILD +++ b/extra-repos/systemd/mutter/APKBUILD @@ -1,8 +1,8 @@ # Forked from Alpine to add systemd! pkgname=mutter -pkgver=99947.6 -_pkgver=47.6 +pkgver=99948.0 +_pkgver=48.0 pkgrel=0 pkgdesc="clutter-based window manager and compositor" url="https://wiki.gnome.org/Projects/Mutter/" @@ -56,6 +56,8 @@ makedepends=" meson pango-dev pipewire-dev + py3-argcomplete + py3-docutils startup-notification-dev wayland-dev wayland-protocols @@ -71,6 +73,7 @@ subpackages="$pkgname-dbg $pkgname-dev $pkgname-doc $pkgname-lang $pkgname-schem source="https://download.gnome.org/sources/mutter/${_pkgver%.*}/mutter-$_pkgver.tar.xz fixudev-req.patch pcversion.patch + fix-freeze.patch " builddir="$srcdir/$pkgname-$_pkgver" @@ -101,7 +104,8 @@ package() { } sha512sums=" -8997096b3dab1e98532fd238b921fa7820621c0f0ac1701f4abfa37b1cc29095bb60ecee1135a6be147d06fcede86276b8a02d5dbca7d1dcba2d51c43821bfc9 mutter-47.6.tar.xz -3e5dd59f2f2fd80edde13f64d70d52a023dec303fd8dbfa3ded0d77faf7643179f2ad74d4acd3450decb67deaf6ac85a7af5146fa96f33917b4363f884413af9 fixudev-req.patch +48abd37a7b622835ccc9a5ca5aaa007744bd0a91764752ae64fc8385b0df700f58bdba11b7145d6bbc15649c84356c5f6107974c696c619cc272a939cb9743e3 mutter-48.0.tar.xz +60eb075a88ca301470130d17371c1410220be0c7d5a929f6b528ec838a1133ebccf46d29f448060043e94c2edf4615ae431927911bede1972ac37f04ff9f29b4 fixudev-req.patch ec94fdecb7a3213903d013c1e6f48e02f8a1972ded16c3604627984cfce0936a0276d284c20e746eb91bf97249785bcf827f6fa55f1629e5290e19423d554e4d pcversion.patch +b7d0bea395c47558a089f75c2c30ac04da2ffc60d044364653098dcb30302aeeb839631fc51c5b5673d11f07fe85af645ea6fe9b2ebe107f8fc67541d5a8e3eb fix-freeze.patch " diff --git a/extra-repos/systemd/mutter/fix-freeze.patch b/extra-repos/systemd/mutter/fix-freeze.patch new file mode 100644 index 000000000..ae911463e --- /dev/null +++ b/extra-repos/systemd/mutter/fix-freeze.patch @@ -0,0 +1,99 @@ +Patch-Source: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4338 +--- +From d6005b539ca42905dfaf1c3854540a559332b78e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michel=20D=C3=A4nzer?= +Date: Mon, 17 Mar 2025 11:00:11 +0100 +Subject: [PATCH 1/2] kms/impl-device: Always catch pending KMS update in + _schedule_process + +Not only if the deadline timer is enabled. With the next commit, it'll +be semi-expected to happen even if the deadline timer is disabled. + +Still leave the warning though, as a reminder that we'd rather prevent +this outside of the KMS thread. + +Part-of: +--- + src/backends/native/meta-kms-impl-device.c | 19 +++++++++---------- + 1 file changed, 9 insertions(+), 10 deletions(-) + +diff --git a/src/backends/native/meta-kms-impl-device.c b/src/backends/native/meta-kms-impl-device.c +index 0135f22033..25cb1cbd5e 100644 +--- a/src/backends/native/meta-kms-impl-device.c ++++ b/src/backends/native/meta-kms-impl-device.c +@@ -2081,17 +2081,8 @@ meta_kms_impl_device_schedule_process (MetaKmsImplDevice *impl_device, + + if (ensure_deadline_timer_armed (impl_device, crtc_frame)) + return; +- +- if (crtc_frame->pending_update) +- { +- meta_kms_impl_device_do_process_update (impl_device, crtc_frame, +- crtc_frame->crtc, +- crtc_frame->pending_update, +- META_KMS_UPDATE_FLAG_NONE); +- } + } +- +- if (crtc_frame->pending_update) ++ else if (crtc_frame->pending_update) + { + MetaKmsImplDevicePrivate *priv = + meta_kms_impl_device_get_instance_private (impl_device); +@@ -2100,6 +2091,14 @@ meta_kms_impl_device_schedule_process (MetaKmsImplDevice *impl_device, + crtc_frame->pending_update, priv->deadline_timer_state); + } + ++ if (crtc_frame->pending_update) ++ { ++ meta_kms_impl_device_do_process_update (impl_device, crtc_frame, ++ crtc_frame->crtc, ++ crtc_frame->pending_update, ++ META_KMS_UPDATE_FLAG_NONE); ++ } ++ + meta_kms_device_set_needs_flush (meta_kms_crtc_get_device (crtc), crtc); + } + +-- +GitLab + + +From a355f68d347830ab1dc8fba0bf409dd0aaf2804d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michel=20D=C3=A4nzer?= +Date: Mon, 17 Mar 2025 10:50:13 +0100 +Subject: [PATCH 2/2] Revert "onscreen/native: Account for all posted frames" + +This reverts commit 9fc5fdc953f96cd91ad54fce6c50964e7ce57815. + +It caused freezes for some users. + +Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3974 +Part-of: +--- + src/backends/native/meta-onscreen-native.c | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/src/backends/native/meta-onscreen-native.c b/src/backends/native/meta-onscreen-native.c +index bb7a2c4bd5..a8d7d7aa26 100644 +--- a/src/backends/native/meta-onscreen-native.c ++++ b/src/backends/native/meta-onscreen-native.c +@@ -1672,7 +1672,6 @@ maybe_post_next_frame (CoglOnscreen *onscreen) + { + kms_update = meta_frame_native_steal_kms_update (frame_native); + post_nonprimary_plane_update (onscreen_native, frame, kms_update); +- onscreen_native->posted_frame = clutter_frame_ref (frame); + return; + } + +@@ -2127,7 +2126,6 @@ meta_onscreen_native_finish_frame (CoglOnscreen *onscreen, + } + + post_nonprimary_plane_update (onscreen_native, frame, kms_update); +- onscreen_native->posted_frame = clutter_frame_ref (frame); + + clutter_frame_set_result (frame, CLUTTER_FRAME_RESULT_PENDING_PRESENTED); + } +-- +GitLab + diff --git a/extra-repos/systemd/mutter/fixudev-req.patch b/extra-repos/systemd/mutter/fixudev-req.patch index 33553cf98..d5ffd7b2e 100644 --- a/extra-repos/systemd/mutter/fixudev-req.patch +++ b/extra-repos/systemd/mutter/fixudev-req.patch @@ -5,10 +5,10 @@ diff --git a/meson.build b/meson.build index 2605a65..3550496 100644 --- a/meson.build +++ b/meson.build -@@ -218,7 +218,7 @@ endif +@@ -259,7 +259,7 @@ + error('The udev support requires logind') + endif - have_libgudev = get_option('udev') - if have_libgudev - libudev_dep = dependency('libudev', version: udev_req) + libudev_dep = dependency('libudev') gudev_dep = dependency('gudev-1.0', version: gudev_req)