diff options
author | Térence Clastres | 2019-08-20 14:40:45 +0200 |
---|---|---|
committer | Térence Clastres | 2019-08-20 15:07:30 +0200 |
commit | 8a1a73497d0763ee393fae898324924f98f4e65a (patch) | |
tree | 6f53644d559853a87440d376dfa3faa243b7bafa | |
parent | 25b4a27791262bf01f7854ce287dfeabb2eb8042 (diff) | |
download | aur-8a1a73497d0763ee393fae898324924f98f4e65a.tar.gz |
Add !724
-rw-r--r-- | .SRCINFO | 4 | ||||
-rw-r--r-- | 724.diff | 149 | ||||
-rw-r--r-- | PKGBUILD | 15 |
3 files changed, 164 insertions, 4 deletions
@@ -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 = 3.32.2+43+gb7f158811 - pkgrel = 15 + pkgrel = 16 url = https://gitlab.gnome.org/GNOME/mutter arch = x86_64 groups = gnome @@ -36,8 +36,10 @@ pkgbase = mutter-performance options = !strip source = mutter-performance::git+https://gitlab.gnome.org/GNOME/mutter.git#commit=b7f158811934d8e4d9dd0be28ad8e1746ceac46c source = 429.diff + source = 724.diff sha256sums = SKIP sha256sums = c22bc32ab8a29e3da986f386d14a8376f1985c051328ca6786571b4b67ec9e48 + sha256sums = 3bfd673cbae598f6482124525d342b4323a1395a0f72d6532bbcf34f66773213 pkgname = mutter-performance diff --git a/724.diff b/724.diff new file mode 100644 index 000000000000..dbe0ed557032 --- /dev/null +++ b/724.diff @@ -0,0 +1,149 @@ +diff --git a/clutter/clutter/clutter-stage-private.h b/clutter/clutter/clutter-stage-private.h +index 2812b5fac..1a583ba2b 100644 +--- a/clutter/clutter/clutter-stage-private.h ++++ b/clutter/clutter/clutter-stage-private.h +@@ -83,6 +83,7 @@ void _clutter_stage_push_pick_clip (ClutterStage *stage, + const ClutterPoint vertices[4]); + + void _clutter_stage_pop_pick_clip (ClutterStage *stage); ++int64_t _clutter_stage_get_next_presentation_time (ClutterStage *stage); + + ClutterActor *_clutter_stage_do_pick (ClutterStage *stage, + gint x, +diff --git a/clutter/clutter/clutter-stage-window.c b/clutter/clutter/clutter-stage-window.c +index 5da7c50f5..312ce0c3e 100644 +--- a/clutter/clutter/clutter-stage-window.c ++++ b/clutter/clutter/clutter-stage-window.c +@@ -178,6 +178,22 @@ _clutter_stage_window_clear_update_time (ClutterStageWindow *window) + iface->clear_update_time (window); + } + ++int64_t ++_clutter_stage_window_get_next_presentation_time (ClutterStageWindow *window) ++{ ++ ClutterStageWindowInterface *iface; ++ ++ g_return_val_if_fail (CLUTTER_IS_STAGE_WINDOW (window), 0); ++ ++ iface = CLUTTER_STAGE_WINDOW_GET_IFACE (window); ++ ++ /* If not implemented then just revert to the old behaviour... */ ++ if (iface->get_next_presentation_time == NULL) ++ return _clutter_stage_window_get_update_time (window); ++ ++ return iface->get_next_presentation_time (window); ++} ++ + void + _clutter_stage_window_add_redraw_clip (ClutterStageWindow *window, + cairo_rectangle_int_t *stage_clip) +diff --git a/clutter/clutter/clutter-stage-window.h b/clutter/clutter/clutter-stage-window.h +index f0aa3d3e9..6fd5200d9 100644 +--- a/clutter/clutter/clutter-stage-window.h ++++ b/clutter/clutter/clutter-stage-window.h +@@ -69,6 +69,8 @@ struct _ClutterStageWindowInterface + GList *(* get_views) (ClutterStageWindow *stage_window); + int64_t (* get_frame_counter) (ClutterStageWindow *stage_window); + void (* finish_frame) (ClutterStageWindow *stage_window); ++ ++ int64_t (* get_next_presentation_time) (ClutterStageWindow *stage_window); + }; + + ClutterActor * _clutter_stage_window_get_wrapper (ClutterStageWindow *window); +@@ -115,6 +117,8 @@ void _clutter_stage_window_finish_frame (ClutterStageWin + + int64_t _clutter_stage_window_get_frame_counter (ClutterStageWindow *window); + ++int64_t _clutter_stage_window_get_next_presentation_time (ClutterStageWindow *window); ++ + G_END_DECLS + + #endif /* __CLUTTER_STAGE_WINDOW_H__ */ +diff --git a/clutter/clutter/clutter-stage.c b/clutter/clutter/clutter-stage.c +index 982c1da6c..2e4c4d674 100644 +--- a/clutter/clutter/clutter-stage.c ++++ b/clutter/clutter/clutter-stage.c +@@ -3908,6 +3908,21 @@ _clutter_stage_clear_update_time (ClutterStage *stage) + _clutter_stage_window_clear_update_time (stage_window); + } + ++int64_t ++_clutter_stage_get_next_presentation_time (ClutterStage *stage) ++{ ++ ClutterStageWindow *stage_window; ++ ++ if (CLUTTER_ACTOR_IN_DESTRUCTION (stage)) ++ return 0; ++ ++ stage_window = _clutter_stage_get_window (stage); ++ if (stage_window == NULL) ++ return 0; ++ ++ return _clutter_stage_window_get_next_presentation_time (stage_window); ++} ++ + /** + * clutter_stage_set_no_clear_hint: + * @stage: a #ClutterStage +diff --git a/clutter/clutter/cogl/clutter-stage-cogl.c b/clutter/clutter/cogl/clutter-stage-cogl.c +index fe7444d7e..89ace1983 100644 +--- a/clutter/clutter/cogl/clutter-stage-cogl.c ++++ b/clutter/clutter/cogl/clutter-stage-cogl.c +@@ -217,7 +217,12 @@ clutter_stage_cogl_schedule_update (ClutterStageWindow *stage_window, + stage_cogl->update_time = next_presentation_time - max_render_time_allowed; + + if (stage_cogl->update_time == stage_cogl->last_update_time) +- stage_cogl->update_time = stage_cogl->last_update_time + refresh_interval; ++ { ++ stage_cogl->update_time += refresh_interval; ++ next_presentation_time += refresh_interval; ++ } ++ ++ stage_cogl->next_presentation_time = next_presentation_time; + } + + static gint64 +@@ -235,6 +240,15 @@ clutter_stage_cogl_clear_update_time (ClutterStageWindow *stage_window) + + stage_cogl->last_update_time = stage_cogl->update_time; + stage_cogl->update_time = -1; ++ stage_cogl->next_presentation_time = -1; ++} ++ ++static int64_t ++clutter_stage_cogl_get_next_presentation_time (ClutterStageWindow *stage_window) ++{ ++ ClutterStageCogl *stage_cogl = CLUTTER_STAGE_COGL (stage_window); ++ ++ return stage_cogl->next_presentation_time; + } + + static ClutterActor * +@@ -975,6 +989,7 @@ clutter_stage_window_iface_init (ClutterStageWindowInterface *iface) + iface->schedule_update = clutter_stage_cogl_schedule_update; + iface->get_update_time = clutter_stage_cogl_get_update_time; + iface->clear_update_time = clutter_stage_cogl_clear_update_time; ++ iface->get_next_presentation_time = clutter_stage_cogl_get_next_presentation_time; + iface->add_redraw_clip = clutter_stage_cogl_add_redraw_clip; + iface->has_redraw_clips = clutter_stage_cogl_has_redraw_clips; + iface->ignoring_redraw_clips = clutter_stage_cogl_ignoring_redraw_clips; +@@ -1024,6 +1039,7 @@ _clutter_stage_cogl_init (ClutterStageCogl *stage) + stage->refresh_rate = 0.0; + + stage->update_time = -1; ++ stage->next_presentation_time = -1; + } + + static void +diff --git a/clutter/clutter/cogl/clutter-stage-cogl.h b/clutter/clutter/cogl/clutter-stage-cogl.h +index 53d0267de..1d83d5525 100644 +--- a/clutter/clutter/cogl/clutter-stage-cogl.h ++++ b/clutter/clutter/cogl/clutter-stage-cogl.h +@@ -53,6 +53,7 @@ struct _ClutterStageCogl + gint64 last_presentation_time; + gint64 update_time; + int64_t last_update_time; ++ int64_t next_presentation_time; + + /* We only enable clipped redraws after 2 frames, since we've seen + * a lot of drivers can struggle to get going and may output some @@ -7,7 +7,7 @@ pkgname=mutter-performance pkgver=3.32.2+43+gb7f158811 -pkgrel=15 +pkgrel=16 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) @@ -24,9 +24,11 @@ replaces=(mutter-781835-workaround) groups=(gnome) _commit=b7f158811934d8e4d9dd0be28ad8e1746ceac46c # tags/3.32.2^43 source=("$pkgname::git+https://gitlab.gnome.org/GNOME/mutter.git#commit=$_commit" - 429.diff) + 429.diff + 724.diff) sha256sums=('SKIP' - 'c22bc32ab8a29e3da986f386d14a8376f1985c051328ca6786571b4b67ec9e48') + 'c22bc32ab8a29e3da986f386d14a8376f1985c051328ca6786571b4b67ec9e48' + '3bfd673cbae598f6482124525d342b4323a1395a0f72d6532bbcf34f66773213') pkgver() { cd $pkgname @@ -281,6 +283,13 @@ prepare() { # Status: 4 # Comment: git cherry-pick -n c4a9117e^..9d65eab5 -Xours + + # Title: Sync timelines to hardware vsync + # URL: https://gitlab.gnome.org/GNOME/mutter/merge_requests/724 + # Type: 1 + # Status: 2 + # Comment: + patch -Np1 < ../724.diff } build() { |