From b2d33c841755257910219b1569b7f8eb70a01b45 Mon Sep 17 00:00:00 2001 From: Daniel van Vugt Date: Fri, 24 Jul 2020 14:13:11 +0800 Subject: [PATCH] clutter-frame-clock: Merge states DISPATCHING and PENDING_PRESENTED Chronologically they already overlap in time, as presentation may complete in the middle of the dispatch function, or otherwise are contiguous in time. And most switch statements treated them the same already. So they're easy to merge into a single `PRESENTING` state. https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1382 --- clutter/clutter/clutter-frame-clock.c | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/clutter/clutter/clutter-frame-clock.c b/clutter/clutter/clutter-frame-clock.c index 1fea057bd2f..d8438277ff4 100644 --- a/clutter/clutter/clutter-frame-clock.c +++ b/clutter/clutter/clutter-frame-clock.c @@ -54,8 +54,7 @@ typedef enum _ClutterFrameClockState CLUTTER_FRAME_CLOCK_STATE_INIT, CLUTTER_FRAME_CLOCK_STATE_IDLE, CLUTTER_FRAME_CLOCK_STATE_SCHEDULED, - CLUTTER_FRAME_CLOCK_STATE_DISPATCHING, - CLUTTER_FRAME_CLOCK_STATE_PENDING_PRESENTED, + CLUTTER_FRAME_CLOCK_STATE_PRESENTING, } ClutterFrameClockState; struct _ClutterFrameClock @@ -204,8 +203,7 @@ clutter_frame_clock_notify_presented (ClutterFrameClock *frame_clock, case CLUTTER_FRAME_CLOCK_STATE_SCHEDULED: g_warn_if_reached (); break; - case CLUTTER_FRAME_CLOCK_STATE_DISPATCHING: - case CLUTTER_FRAME_CLOCK_STATE_PENDING_PRESENTED: + case CLUTTER_FRAME_CLOCK_STATE_PRESENTING: frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_IDLE; maybe_reschedule_update (frame_clock); break; @@ -292,8 +290,7 @@ clutter_frame_clock_inhibit (ClutterFrameClock *frame_clock) frame_clock->pending_reschedule = TRUE; frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_IDLE; break; - case CLUTTER_FRAME_CLOCK_STATE_DISPATCHING: - case CLUTTER_FRAME_CLOCK_STATE_PENDING_PRESENTED: + case CLUTTER_FRAME_CLOCK_STATE_PRESENTING: break; } @@ -332,8 +329,7 @@ clutter_frame_clock_schedule_update_now (ClutterFrameClock *frame_clock) break; case CLUTTER_FRAME_CLOCK_STATE_SCHEDULED: return; - case CLUTTER_FRAME_CLOCK_STATE_DISPATCHING: - case CLUTTER_FRAME_CLOCK_STATE_PENDING_PRESENTED: + case CLUTTER_FRAME_CLOCK_STATE_PRESENTING: frame_clock->pending_reschedule = TRUE; frame_clock->pending_reschedule_now = TRUE; return; @@ -370,8 +366,7 @@ clutter_frame_clock_schedule_update (ClutterFrameClock *frame_clock) break; case CLUTTER_FRAME_CLOCK_STATE_SCHEDULED: return; - case CLUTTER_FRAME_CLOCK_STATE_DISPATCHING: - case CLUTTER_FRAME_CLOCK_STATE_PENDING_PRESENTED: + case CLUTTER_FRAME_CLOCK_STATE_PRESENTING: frame_clock->pending_reschedule = TRUE; return; } @@ -393,7 +388,7 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock, g_source_set_ready_time (frame_clock->source, -1); - frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_DISPATCHING; + frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_PRESENTING; frame_count = frame_clock->frame_count++; @@ -420,19 +415,19 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock, switch (frame_clock->state) { case CLUTTER_FRAME_CLOCK_STATE_INIT: - case CLUTTER_FRAME_CLOCK_STATE_PENDING_PRESENTED: g_warn_if_reached (); break; case CLUTTER_FRAME_CLOCK_STATE_IDLE: + /* Presentation completed synchronously in the above listener */ case CLUTTER_FRAME_CLOCK_STATE_SCHEDULED: break; - case CLUTTER_FRAME_CLOCK_STATE_DISPATCHING: + case CLUTTER_FRAME_CLOCK_STATE_PRESENTING: switch (result) { case CLUTTER_FRAME_RESULT_PENDING_PRESENTED: - frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_PENDING_PRESENTED; break; case CLUTTER_FRAME_RESULT_IDLE: + /* The frame was aborted; nothing to paint/present */ frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_IDLE; maybe_reschedule_update (frame_clock); break; -- GitLab