1
0
Fork 0
mirror of https://gitlab.postmarketos.org/postmarketOS/pmaports.git synced 2025-07-13 00:29:49 +03:00
pmaports/extra-repos/systemd/mutter-mobile/fix-freeze.patch

99 lines
3.7 KiB
Diff

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?= <mdaenzer@redhat.com>
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: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4338>
---
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?= <mdaenzer@redhat.com>
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: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4338>
---
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