1:46.1-3: Update mr1441
Signed-off-by: Mingi Sung <sungmg@saltyming.net>
This commit is contained in:
parent
f412c9961f
commit
80a5c0e03d
3 changed files with 59 additions and 36 deletions
6
.SRCINFO
6
.SRCINFO
|
@ -1,7 +1,7 @@
|
|||
pkgbase = mutter-performance
|
||||
pkgdesc = A window manager for GNOME | Attempts to improve performances with non-upstreamed merge-requests and frequent stable branch resync
|
||||
pkgver = 46.1
|
||||
pkgrel = 2
|
||||
pkgrel = 3
|
||||
epoch = 1
|
||||
url = https://gitlab.gnome.org/GNOME/mutter
|
||||
arch = x86_64
|
||||
|
@ -78,11 +78,11 @@ pkgbase = mutter-performance
|
|||
source = mr3373.patch
|
||||
source = fix-sigsegv-in-meta_window_foreach_transient.patch
|
||||
sha256sums = 56dc25f7743ca3d72e5471ceadeb774e19e34feeb7ba106a6a78c8bb2cc20b56
|
||||
sha256sums = 1a0e4ca2ebf32c9b75085114cb1c6856e6f35ea3a157a7e2c5be765466716a34
|
||||
sha256sums = 24385020adda767feb95c7dd25427dce229c3d9e47cb7d87760eeb0b1f4183c2
|
||||
sha256sums = 3e1f07b696ad37b1c639a524c092cd9259444bc6156542901ccaec936bea240f
|
||||
sha256sums = 488326a7b1eca1e3a91cbfcec0101b217b66b440c3b14e4333406373a84b3682
|
||||
b2sums = 4acd4a192455890b12b2fc9b6553ed65bd2176307cd6c6683fc2ab476b7fa88f4b5e507a1209b3e900c68d94768f3cf749b4f5d87d25300b33a112182c8a62a7
|
||||
b2sums = a40fdd0d5c01c0bd5cea98e8aeae6d313834a863b2c4789aea107c8318ab63783a5e4cb92759f3c2b74e8fcac5775b7fa14bf7d11692524f8d0a46f67ac532d6
|
||||
b2sums = 6d3f086ea407fe68b9eaa0a1d19fc3d28e75374a65ba023385b8314ec2f6f7110ac89d422f1c1db063d65b163235a66569cb073d8941499903beba7f8f531846
|
||||
b2sums = 71f10db4ebe04a787940c7048131eac67cffd3ec8e415cfc961b8041b881f272650581e9df273e2a8da23a50ec9151c790dc2d5ecc0309ab2847a22f8c922c9c
|
||||
b2sums = 03c9531036437dcb145f5676055bc29a2f855d2c53513be3063b87797a994fcaa86f59fc6d22cd490f2dec92bd1afc6e8556a881045a89ab69127be43f32ba27
|
||||
|
||||
|
|
6
PKGBUILD
6
PKGBUILD
|
@ -33,7 +33,7 @@ else
|
|||
fi
|
||||
epoch=1
|
||||
pkgver=46.1
|
||||
pkgrel=2
|
||||
pkgrel=3
|
||||
pkgdesc="A window manager for GNOME | Attempts to improve performances with non-upstreamed merge-requests and frequent stable branch resync"
|
||||
url="https://gitlab.gnome.org/GNOME/mutter"
|
||||
arch=(x86_64 aarch64)
|
||||
|
@ -118,11 +118,11 @@ source=("git+$url.git#commit=$_commit"
|
|||
'mr3373.patch'
|
||||
'fix-sigsegv-in-meta_window_foreach_transient.patch')
|
||||
sha256sums=('56dc25f7743ca3d72e5471ceadeb774e19e34feeb7ba106a6a78c8bb2cc20b56'
|
||||
'1a0e4ca2ebf32c9b75085114cb1c6856e6f35ea3a157a7e2c5be765466716a34'
|
||||
'24385020adda767feb95c7dd25427dce229c3d9e47cb7d87760eeb0b1f4183c2'
|
||||
'3e1f07b696ad37b1c639a524c092cd9259444bc6156542901ccaec936bea240f'
|
||||
'488326a7b1eca1e3a91cbfcec0101b217b66b440c3b14e4333406373a84b3682')
|
||||
b2sums=('4acd4a192455890b12b2fc9b6553ed65bd2176307cd6c6683fc2ab476b7fa88f4b5e507a1209b3e900c68d94768f3cf749b4f5d87d25300b33a112182c8a62a7'
|
||||
'a40fdd0d5c01c0bd5cea98e8aeae6d313834a863b2c4789aea107c8318ab63783a5e4cb92759f3c2b74e8fcac5775b7fa14bf7d11692524f8d0a46f67ac532d6'
|
||||
'6d3f086ea407fe68b9eaa0a1d19fc3d28e75374a65ba023385b8314ec2f6f7110ac89d422f1c1db063d65b163235a66569cb073d8941499903beba7f8f531846'
|
||||
'71f10db4ebe04a787940c7048131eac67cffd3ec8e415cfc961b8041b881f272650581e9df273e2a8da23a50ec9151c790dc2d5ecc0309ab2847a22f8c922c9c'
|
||||
'03c9531036437dcb145f5676055bc29a2f855d2c53513be3063b87797a994fcaa86f59fc6d22cd490f2dec92bd1afc6e8556a881045a89ab69127be43f32ba27')
|
||||
|
||||
|
|
83
mr1441.patch
83
mr1441.patch
|
@ -1,7 +1,7 @@
|
|||
Author: Daniel van Vugt <daniel.van.vugt@canonical.com>
|
||||
Source: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1441
|
||||
Commit: 745d25c4fc20e8bf474e00756fa93a0c63d3b816
|
||||
Last Updated: 04/17/24 (Mutter 46.0+r49)
|
||||
Commit: abe84f8ef3e075f7caae6ced8dfb6d536948d2d8
|
||||
Last Updated: 04/29/24 (Mutter 46.1)
|
||||
---
|
||||
|
||||
Use triple buffering if and when the previous frame is running late.
|
||||
|
@ -16,7 +16,7 @@ there's no latency penalty when the system is able to maintain full frame rate.
|
|||
|
||||
---
|
||||
diff --git a/clutter/clutter/clutter-frame-clock.c b/clutter/clutter/clutter-frame-clock.c
|
||||
index 93e4c9329020286d3c1202ef4f6420b2deb74942..a6c7ecea21fa0bf40baf992c4b800f51253e9586 100644
|
||||
index 93e4c9329020286d3c1202ef4f6420b2deb74942..b637fac637f956b2ae5eb71b755f4f00bf689062 100644
|
||||
--- a/clutter/clutter/clutter-frame-clock.c
|
||||
+++ b/clutter/clutter/clutter-frame-clock.c
|
||||
@@ -42,6 +42,15 @@ enum
|
||||
|
@ -391,7 +391,33 @@ index 93e4c9329020286d3c1202ef4f6420b2deb74942..a6c7ecea21fa0bf40baf992c4b800f51
|
|||
break;
|
||||
}
|
||||
|
||||
@@ -770,11 +892,18 @@ clutter_frame_clock_schedule_update_now (ClutterFrameClock *frame_clock)
|
||||
@@ -753,6 +875,25 @@ clutter_frame_clock_uninhibit (ClutterFrameClock *frame_clock)
|
||||
maybe_reschedule_update (frame_clock);
|
||||
}
|
||||
|
||||
+static gboolean
|
||||
+want_triple_buffering (ClutterFrameClock *frame_clock)
|
||||
+{
|
||||
+ switch (triple_buffering_mode)
|
||||
+ {
|
||||
+ case TRIPLE_BUFFERING_MODE_NEVER:
|
||||
+ return FALSE;
|
||||
+ case TRIPLE_BUFFERING_MODE_AUTO:
|
||||
+ return frame_clock->mode == CLUTTER_FRAME_CLOCK_MODE_FIXED &&
|
||||
+ !(frame_clock->last_flip_hints &
|
||||
+ CLUTTER_FRAME_HINT_DIRECT_SCANOUT_ATTEMPTED);
|
||||
+ case TRIPLE_BUFFERING_MODE_ALWAYS:
|
||||
+ return TRUE;
|
||||
+ }
|
||||
+
|
||||
+ g_assert_not_reached ();
|
||||
+ return FALSE;
|
||||
+}
|
||||
+
|
||||
void
|
||||
clutter_frame_clock_schedule_update_now (ClutterFrameClock *frame_clock)
|
||||
{
|
||||
@@ -770,11 +911,24 @@ clutter_frame_clock_schedule_update_now (ClutterFrameClock *frame_clock)
|
||||
case CLUTTER_FRAME_CLOCK_STATE_INIT:
|
||||
case CLUTTER_FRAME_CLOCK_STATE_IDLE:
|
||||
case CLUTTER_FRAME_CLOCK_STATE_SCHEDULED:
|
||||
|
@ -402,17 +428,23 @@ index 93e4c9329020286d3c1202ef4f6420b2deb74942..a6c7ecea21fa0bf40baf992c4b800f51
|
|||
return;
|
||||
- case CLUTTER_FRAME_CLOCK_STATE_DISPATCHING:
|
||||
- case CLUTTER_FRAME_CLOCK_STATE_PENDING_PRESENTED:
|
||||
+ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE:
|
||||
+ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED:
|
||||
+ next_update_time_us = g_get_monotonic_time ();
|
||||
+ frame_clock->state =
|
||||
+ CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED_NOW;
|
||||
+ break;
|
||||
+ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE:
|
||||
+ if (want_triple_buffering (frame_clock))
|
||||
+ {
|
||||
+ frame_clock->state =
|
||||
+ CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED_NOW;
|
||||
+ break;
|
||||
+ }
|
||||
+ G_GNUC_FALLTHROUGH;
|
||||
+ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_TWO:
|
||||
frame_clock->pending_reschedule = TRUE;
|
||||
frame_clock->pending_reschedule_now = TRUE;
|
||||
return;
|
||||
@@ -803,13 +932,18 @@ clutter_frame_clock_schedule_update_now (ClutterFrameClock *frame_clock)
|
||||
@@ -803,13 +957,17 @@ clutter_frame_clock_schedule_update_now (ClutterFrameClock *frame_clock)
|
||||
|
||||
frame_clock->next_update_time_us = next_update_time_us;
|
||||
g_source_set_ready_time (frame_clock->source, next_update_time_us);
|
||||
|
@ -426,13 +458,12 @@ index 93e4c9329020286d3c1202ef4f6420b2deb74942..a6c7ecea21fa0bf40baf992c4b800f51
|
|||
+ TripleBufferingMode current_mode = triple_buffering_mode;
|
||||
+
|
||||
+ if (current_mode == TRIPLE_BUFFERING_MODE_AUTO &&
|
||||
+ (frame_clock->last_flip_hints &
|
||||
+ CLUTTER_FRAME_HINT_DIRECT_SCANOUT_ATTEMPTED))
|
||||
+ !want_triple_buffering (frame_clock))
|
||||
+ current_mode = TRIPLE_BUFFERING_MODE_NEVER;
|
||||
|
||||
if (frame_clock->inhibit_count > 0)
|
||||
{
|
||||
@@ -825,12 +959,41 @@ clutter_frame_clock_schedule_update (ClutterFrameClock *frame_clock)
|
||||
@@ -825,12 +983,33 @@ clutter_frame_clock_schedule_update (ClutterFrameClock *frame_clock)
|
||||
frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_SCHEDULED;
|
||||
return;
|
||||
case CLUTTER_FRAME_CLOCK_STATE_IDLE:
|
||||
|
@ -452,14 +483,6 @@ index 93e4c9329020286d3c1202ef4f6420b2deb74942..a6c7ecea21fa0bf40baf992c4b800f51
|
|||
+ frame_clock->pending_reschedule = TRUE;
|
||||
+ return;
|
||||
+ case TRIPLE_BUFFERING_MODE_AUTO:
|
||||
+ calculate_next_update_time_us (frame_clock,
|
||||
+ &next_update_time_us,
|
||||
+ &frame_clock->next_presentation_time_us,
|
||||
+ &frame_clock->next_frame_deadline_us);
|
||||
+ frame_clock->is_next_presentation_time_valid =
|
||||
+ (frame_clock->next_presentation_time_us != 0);
|
||||
+ frame_clock->has_next_frame_deadline =
|
||||
+ (frame_clock->next_frame_deadline_us != 0);
|
||||
+ frame_clock->state =
|
||||
+ CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED;
|
||||
+ break;
|
||||
|
@ -469,14 +492,14 @@ index 93e4c9329020286d3c1202ef4f6420b2deb74942..a6c7ecea21fa0bf40baf992c4b800f51
|
|||
+ frame_clock->is_next_presentation_time_valid = FALSE;
|
||||
+ frame_clock->state =
|
||||
+ CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED;
|
||||
+ break;
|
||||
+ return;
|
||||
+ }
|
||||
+ break;
|
||||
+ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_TWO:
|
||||
frame_clock->pending_reschedule = TRUE;
|
||||
return;
|
||||
}
|
||||
@@ -859,7 +1022,6 @@ clutter_frame_clock_schedule_update (ClutterFrameClock *frame_clock)
|
||||
@@ -859,7 +1038,6 @@ clutter_frame_clock_schedule_update (ClutterFrameClock *frame_clock)
|
||||
|
||||
frame_clock->next_update_time_us = next_update_time_us;
|
||||
g_source_set_ready_time (frame_clock->source, next_update_time_us);
|
||||
|
@ -484,7 +507,7 @@ index 93e4c9329020286d3c1202ef4f6420b2deb74942..a6c7ecea21fa0bf40baf992c4b800f51
|
|||
}
|
||||
|
||||
void
|
||||
@@ -875,6 +1037,8 @@ clutter_frame_clock_set_mode (ClutterFrameClock *frame_clock,
|
||||
@@ -875,6 +1053,8 @@ clutter_frame_clock_set_mode (ClutterFrameClock *frame_clock,
|
||||
{
|
||||
case CLUTTER_FRAME_CLOCK_STATE_INIT:
|
||||
case CLUTTER_FRAME_CLOCK_STATE_IDLE:
|
||||
|
@ -493,7 +516,7 @@ index 93e4c9329020286d3c1202ef4f6420b2deb74942..a6c7ecea21fa0bf40baf992c4b800f51
|
|||
break;
|
||||
case CLUTTER_FRAME_CLOCK_STATE_SCHEDULED:
|
||||
frame_clock->pending_reschedule = TRUE;
|
||||
@@ -885,8 +1049,14 @@ clutter_frame_clock_set_mode (ClutterFrameClock *frame_clock,
|
||||
@@ -885,8 +1065,14 @@ clutter_frame_clock_set_mode (ClutterFrameClock *frame_clock,
|
||||
frame_clock->pending_reschedule_now = TRUE;
|
||||
frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_IDLE;
|
||||
break;
|
||||
|
@ -510,7 +533,7 @@ index 93e4c9329020286d3c1202ef4f6420b2deb74942..a6c7ecea21fa0bf40baf992c4b800f51
|
|||
break;
|
||||
}
|
||||
|
||||
@@ -922,7 +1092,7 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock,
|
||||
@@ -922,7 +1108,7 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock,
|
||||
frame_clock->refresh_interval_us;
|
||||
|
||||
lateness_us = time_us - ideal_dispatch_time_us;
|
||||
|
@ -519,7 +542,7 @@ index 93e4c9329020286d3c1202ef4f6420b2deb74942..a6c7ecea21fa0bf40baf992c4b800f51
|
|||
frame_clock->last_dispatch_lateness_us = 0;
|
||||
else
|
||||
frame_clock->last_dispatch_lateness_us = lateness_us;
|
||||
@@ -943,10 +1113,27 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock,
|
||||
@@ -943,10 +1129,27 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock,
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -548,7 +571,7 @@ index 93e4c9329020286d3c1202ef4f6420b2deb74942..a6c7ecea21fa0bf40baf992c4b800f51
|
|||
|
||||
frame_count = frame_clock->frame_count++;
|
||||
|
||||
@@ -977,26 +1164,36 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock,
|
||||
@@ -977,26 +1180,36 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock,
|
||||
result = iface->frame (frame_clock, frame, frame_clock->listener.user_data);
|
||||
COGL_TRACE_END (ClutterFrameClockFrame);
|
||||
|
||||
|
@ -598,7 +621,7 @@ index 93e4c9329020286d3c1202ef4f6420b2deb74942..a6c7ecea21fa0bf40baf992c4b800f51
|
|||
}
|
||||
break;
|
||||
}
|
||||
@@ -1029,21 +1226,31 @@ frame_clock_source_dispatch (GSource *source,
|
||||
@@ -1029,21 +1242,31 @@ frame_clock_source_dispatch (GSource *source,
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -635,7 +658,7 @@ index 93e4c9329020286d3c1202ef4f6420b2deb74942..a6c7ecea21fa0bf40baf992c4b800f51
|
|||
|
||||
if (frame_clock->got_measurements_last_frame)
|
||||
g_string_append_printf (string, " =");
|
||||
@@ -1210,8 +1417,6 @@ clutter_frame_clock_dispose (GObject *object)
|
||||
@@ -1210,8 +1433,6 @@ clutter_frame_clock_dispose (GObject *object)
|
||||
{
|
||||
ClutterFrameClock *frame_clock = CLUTTER_FRAME_CLOCK (object);
|
||||
|
||||
|
@ -644,7 +667,7 @@ index 93e4c9329020286d3c1202ef4f6420b2deb74942..a6c7ecea21fa0bf40baf992c4b800f51
|
|||
if (frame_clock->source)
|
||||
{
|
||||
g_signal_emit (frame_clock, signals[DESTROY], 0);
|
||||
@@ -1235,6 +1440,15 @@ static void
|
||||
@@ -1235,6 +1456,15 @@ static void
|
||||
clutter_frame_clock_class_init (ClutterFrameClockClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
|
@ -738,10 +761,10 @@ index 34f0770bd7dd630a3d9da5728254b0b5fbcc9e99..c7b3d02acb940bf5712179b576fb5eb7
|
|||
+
|
||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterFrame, clutter_frame_unref)
|
||||
diff --git a/clutter/clutter/clutter-stage-view.c b/clutter/clutter/clutter-stage-view.c
|
||||
index b503ef839a059c83d90b221cafd7b8c6f7d55b34..1fbe3ae7a3372cffe14b3250ae7dbae2f5b4b5f0 100644
|
||||
index f5188e2acf36125c8c6c58f917a6167423d3c2eb..d53e37785101dda48e673a181a4ffc8802e09784 100644
|
||||
--- a/clutter/clutter/clutter-stage-view.c
|
||||
+++ b/clutter/clutter/clutter-stage-view.c
|
||||
@@ -902,14 +902,21 @@ handle_frame_clock_frame (ClutterFrameClock *frame_clock,
|
||||
@@ -898,14 +898,21 @@ handle_frame_clock_frame (ClutterFrameClock *frame_clock,
|
||||
|
||||
_clutter_stage_window_redraw_view (stage_window, view, frame);
|
||||
|
||||
|
|
Loading…
Reference in a new issue