diff --git a/clutter/clutter/clutter-frame-clock.c b/clutter/clutter/clutter-frame-clock.c index 3f3b9d9d83fb4d5a98f60e5d1bcac9abde54865a..42c1e66d038fb2516ff18887ac63cf30de673cb5 100644 --- a/clutter/clutter/clutter-frame-clock.c +++ b/clutter/clutter/clutter-frame-clock.c @@ -63,6 +63,7 @@ struct _ClutterFrameClock GObject parent; float refresh_rate; + int64_t refresh_interval_us; ClutterFrameListener listener; GSource *source; @@ -92,6 +93,15 @@ clutter_frame_clock_get_refresh_rate (ClutterFrameClock *frame_clock) return frame_clock->refresh_rate; } +static void +clutter_frame_clock_set_refresh_rate (ClutterFrameClock *frame_clock, + float refresh_rate) +{ + frame_clock->refresh_rate = refresh_rate; + frame_clock->refresh_interval_us = + (int64_t) (0.5 + G_USEC_PER_SEC / refresh_rate); +} + void clutter_frame_clock_add_timeline (ClutterFrameClock *frame_clock, ClutterTimeline *timeline) @@ -197,7 +207,7 @@ clutter_frame_clock_notify_presented (ClutterFrameClock *frame_clock, frame_clock->last_presentation_time_us = g_get_monotonic_time (); } - frame_clock->refresh_rate = frame_info->refresh_rate; + clutter_frame_clock_set_refresh_rate (frame_clock, frame_info->refresh_rate); switch (frame_clock->state) { @@ -221,7 +231,6 @@ calculate_next_update_time_us (ClutterFrameClock *frame_clock, { int64_t last_presentation_time_us; int64_t now_us; - float refresh_rate; int64_t refresh_interval_us; int64_t min_render_time_allowed_us; int64_t max_render_time_allowed_us; @@ -232,8 +241,7 @@ calculate_next_update_time_us (ClutterFrameClock *frame_clock, now_us = g_get_monotonic_time (); - refresh_rate = frame_clock->refresh_rate; - refresh_interval_us = (int64_t) (0.5 + G_USEC_PER_SEC / refresh_rate); + refresh_interval_us = frame_clock->refresh_interval_us; min_render_time_allowed_us = refresh_interval_us / 2; max_render_time_allowed_us = refresh_interval_us - SYNC_DELAY_US; @@ -501,7 +509,7 @@ clutter_frame_clock_new (float refresh_rate, init_frame_clock_source (frame_clock); - frame_clock->refresh_rate = refresh_rate; + clutter_frame_clock_set_refresh_rate (frame_clock, refresh_rate); return frame_clock; }