frame-clock: Don't delay schedule_now() if already scheduled

If we call schedule(), which will schedule an update some time in the
future, and then schedule_now(), we should reschedule the frame clock to
update immediately, and not some time in the future.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2854>
This commit is contained in:
Jonas Ådahl 2022-06-09 15:37:19 +02:00 committed by Marge Bot
parent 9752ddf2cf
commit cc2bbb25ba
2 changed files with 2 additions and 2 deletions

View File

@ -632,10 +632,9 @@ 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:
next_update_time_us = g_get_monotonic_time ();
break;
case CLUTTER_FRAME_CLOCK_STATE_SCHEDULED:
return;
case CLUTTER_FRAME_CLOCK_STATE_DISPATCHING:
case CLUTTER_FRAME_CLOCK_STATE_PENDING_PRESENTED:
frame_clock->pending_reschedule = TRUE;

View File

@ -430,6 +430,7 @@ schedule_update_now_hw_callback (gpointer user_data)
UpdateNowFrameClockTest *test = user_data;
ClutterFrameClock *frame_clock = test->base.fake_hw_clock->frame_clock;
clutter_frame_clock_schedule_update (frame_clock);
clutter_frame_clock_schedule_update_now (frame_clock);
g_assert (!test->idle_source_id);
test->idle_source_id = g_idle_add (assert_not_reached_idle, NULL);