summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoakim Soderlund2023-12-09 12:08:13 +0100
committerJoakim Soderlund2023-12-09 12:08:13 +0100
commitf1637cdaea6350508e3e0c5987ba19df9bb78a72 (patch)
tree651eedf1d3a4eb3599720e2ae17bdee20962e750
parent0ffdab2450d103c3ee8a3fc682b8378afdbfff91 (diff)
downloadaur-f1637cdaea6350508e3e0c5987ba19df9bb78a72.tar.gz
Upgrade !1441 to commit 0b896518
-rw-r--r--.SRCINFO4
-rw-r--r--PKGBUILD4
-rw-r--r--mr1441.patch55
3 files changed, 41 insertions, 22 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 817c4fb40c25..20434867391c 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = mutter-dynamic-buffering
pkgdesc = Window manager and compositor for GNOME (with dynamic triple/double buffering)
pkgver = 45.2
- pkgrel = 1
+ pkgrel = 2
url = https://gitlab.gnome.org/GNOME/mutter
arch = x86_64
license = GPL
@@ -38,7 +38,7 @@ pkgbase = mutter-dynamic-buffering
source = mutter-dynamic-buffering::git+https://gitlab.gnome.org/GNOME/mutter.git#commit=08de409d40a92f8bf74ee8005b382aa194d76a45
source = mr1441.patch
sha256sums = SKIP
- sha256sums = 09dbb820bea8624081c58bd830e42c52fa5cc0a878ac8c02325bf3f0159ae2f3
+ sha256sums = 5b0e927eb2873256c7999ebc711f5f0db2296550d7dbe51e757335e2b77d016c
pkgname = mutter-dynamic-buffering
provides = mutter
diff --git a/PKGBUILD b/PKGBUILD
index 288fcadf25a3..a38ff75dea69 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -6,7 +6,7 @@
pkgbase=mutter-dynamic-buffering
pkgname=(mutter-dynamic-buffering)
pkgver=45.2
-pkgrel=1
+pkgrel=2
pkgdesc="Window manager and compositor for GNOME (with dynamic triple/double buffering)"
url="https://gitlab.gnome.org/GNOME/mutter"
arch=(x86_64)
@@ -58,7 +58,7 @@ source=(
)
sha256sums=(
'SKIP'
- '09dbb820bea8624081c58bd830e42c52fa5cc0a878ac8c02325bf3f0159ae2f3'
+ '5b0e927eb2873256c7999ebc711f5f0db2296550d7dbe51e757335e2b77d016c'
)
pkgver() {
diff --git a/mr1441.patch b/mr1441.patch
index 2510575fe3dc..84f8d47715a3 100644
--- a/mr1441.patch
+++ b/mr1441.patch
@@ -1,10 +1,10 @@
Author: Daniel van Vugt <daniel.van.vugt@canonical.com>
Source: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1441
-Commit: 1aee8301bd6b35a5b2609d4309dafd96e63da6e0
-Rebase: Thu Oct 19 15:37:33 2023 +0800
+Commit: 0b896518b2028d9c4d6ea44806d093fd33793689
+Rebase: Fri Dec 8 16:31:18 2023 +0800
diff --git a/clutter/clutter/clutter-frame-clock.c b/clutter/clutter/clutter-frame-clock.c
-index ab493e0b0..24f211a77 100644
+index ab493e0b0..905d8c926 100644
--- a/clutter/clutter/clutter-frame-clock.c
+++ b/clutter/clutter/clutter-frame-clock.c
@@ -35,6 +35,15 @@ enum
@@ -225,16 +225,18 @@ index ab493e0b0..24f211a77 100644
return max_render_time_us;
}
-@@ -453,7 +516,7 @@ calculate_next_update_time_us (ClutterFrameClock *frame_clock,
+@@ -453,8 +516,9 @@ calculate_next_update_time_us (ClutterFrameClock *frame_clock,
int64_t refresh_interval_us;
int64_t min_render_time_allowed_us;
int64_t max_render_time_allowed_us;
- int64_t next_presentation_time_us;
+ int64_t next_presentation_time_us = 0;
int64_t next_update_time_us;
++ gboolean skipped_frames = FALSE;
now_us = g_get_monotonic_time ();
-@@ -498,7 +561,24 @@ calculate_next_update_time_us (ClutterFrameClock *frame_clock,
+
+@@ -498,7 +562,24 @@ calculate_next_update_time_us (ClutterFrameClock *frame_clock,
*
*/
last_presentation_time_us = frame_clock->last_presentation_time_us;
@@ -260,7 +262,24 @@ index ab493e0b0..24f211a77 100644
/*
* However, the last presentation could have happened more than a frame ago.
-@@ -607,8 +687,12 @@ clutter_frame_clock_inhibit (ClutterFrameClock *frame_clock)
+@@ -534,6 +615,7 @@ calculate_next_update_time_us (ClutterFrameClock *frame_clock,
+
+ current_phase_us = (now_us - last_presentation_time_us) % refresh_interval_us;
+ next_presentation_time_us = now_us - current_phase_us + refresh_interval_us;
++ skipped_frames = TRUE;
+ }
+
+ if (frame_clock->is_next_presentation_time_valid)
+@@ -566,7 +648,7 @@ calculate_next_update_time_us (ClutterFrameClock *frame_clock,
+ }
+ }
+
+- if (next_presentation_time_us != last_presentation_time_us + refresh_interval_us)
++ if (skipped_frames)
+ {
+ /* There was an idle period since the last presentation, so there seems
+ * be no constantly updating actor. In this case it's best to start
+@@ -607,8 +689,12 @@ clutter_frame_clock_inhibit (ClutterFrameClock *frame_clock)
frame_clock->pending_reschedule = TRUE;
frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_IDLE;
break;
@@ -275,7 +294,7 @@ index ab493e0b0..24f211a77 100644
break;
}
-@@ -645,9 +729,15 @@ clutter_frame_clock_schedule_update_now (ClutterFrameClock *frame_clock)
+@@ -645,9 +731,15 @@ clutter_frame_clock_schedule_update_now (ClutterFrameClock *frame_clock)
case CLUTTER_FRAME_CLOCK_STATE_IDLE:
case CLUTTER_FRAME_CLOCK_STATE_SCHEDULED:
next_update_time_us = g_get_monotonic_time ();
@@ -293,7 +312,7 @@ index ab493e0b0..24f211a77 100644
frame_clock->pending_reschedule = TRUE;
frame_clock->pending_reschedule_now = TRUE;
return;
-@@ -657,7 +747,6 @@ clutter_frame_clock_schedule_update_now (ClutterFrameClock *frame_clock)
+@@ -657,7 +749,6 @@ 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);
@@ -301,7 +320,7 @@ index ab493e0b0..24f211a77 100644
frame_clock->is_next_presentation_time_valid = FALSE;
}
-@@ -665,6 +754,12 @@ void
+@@ -665,6 +756,12 @@ void
clutter_frame_clock_schedule_update (ClutterFrameClock *frame_clock)
{
int64_t next_update_time_us = -1;
@@ -314,7 +333,7 @@ index ab493e0b0..24f211a77 100644
if (frame_clock->inhibit_count > 0)
{
-@@ -676,6 +771,7 @@ clutter_frame_clock_schedule_update (ClutterFrameClock *frame_clock)
+@@ -676,6 +773,7 @@ clutter_frame_clock_schedule_update (ClutterFrameClock *frame_clock)
{
case CLUTTER_FRAME_CLOCK_STATE_INIT:
next_update_time_us = g_get_monotonic_time ();
@@ -322,7 +341,7 @@ index ab493e0b0..24f211a77 100644
break;
case CLUTTER_FRAME_CLOCK_STATE_IDLE:
calculate_next_update_time_us (frame_clock,
-@@ -684,11 +780,37 @@ clutter_frame_clock_schedule_update (ClutterFrameClock *frame_clock)
+@@ -684,11 +782,37 @@ clutter_frame_clock_schedule_update (ClutterFrameClock *frame_clock)
&frame_clock->min_render_time_allowed_us);
frame_clock->is_next_presentation_time_valid =
(frame_clock->next_presentation_time_us != 0);
@@ -362,7 +381,7 @@ index ab493e0b0..24f211a77 100644
frame_clock->pending_reschedule = TRUE;
return;
}
-@@ -697,7 +819,6 @@ clutter_frame_clock_schedule_update (ClutterFrameClock *frame_clock)
+@@ -697,7 +821,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);
@@ -370,7 +389,7 @@ index ab493e0b0..24f211a77 100644
}
static void
-@@ -728,7 +849,7 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock,
+@@ -728,7 +851,7 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock,
frame_clock->refresh_interval_us;
lateness_us = time_us - ideal_dispatch_time_us;
@@ -379,7 +398,7 @@ index ab493e0b0..24f211a77 100644
frame_clock->last_dispatch_lateness_us = 0;
else
frame_clock->last_dispatch_lateness_us = lateness_us;
-@@ -749,10 +870,25 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock,
+@@ -749,10 +872,25 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock,
}
#endif
@@ -406,7 +425,7 @@ index ab493e0b0..24f211a77 100644
frame_count = frame_clock->frame_count++;
-@@ -781,25 +917,31 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock,
+@@ -781,25 +919,31 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock,
result = iface->frame (frame_clock, frame, frame_clock->listener.user_data);
COGL_TRACE_END (ClutterFrameClockFrame);
@@ -450,7 +469,7 @@ index ab493e0b0..24f211a77 100644
}
break;
}
-@@ -832,10 +974,13 @@ frame_clock_source_dispatch (GSource *source,
+@@ -832,10 +976,13 @@ frame_clock_source_dispatch (GSource *source,
}
void
@@ -466,7 +485,7 @@ index ab493e0b0..24f211a77 100644
}
GString *
-@@ -929,8 +1074,6 @@ clutter_frame_clock_dispose (GObject *object)
+@@ -929,8 +1076,6 @@ clutter_frame_clock_dispose (GObject *object)
{
ClutterFrameClock *frame_clock = CLUTTER_FRAME_CLOCK (object);
@@ -475,7 +494,7 @@ index ab493e0b0..24f211a77 100644
if (frame_clock->source)
{
g_signal_emit (frame_clock, signals[DESTROY], 0);
-@@ -951,6 +1094,15 @@ static void
+@@ -951,6 +1096,15 @@ static void
clutter_frame_clock_class_init (ClutterFrameClockClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);