mirror of
https://github.com/brl/mutter.git
synced 2025-02-19 14:44:10 +00:00
clutter/stage-cogl: Reduce while loop iterations
If `last_presentation_time` is zero (unsupported) or just very old (system was idle) then we would like to avoid that triggering a large number of loop interations. This will get us closer to the right answer without iterating. https://gitlab.gnome.org/GNOME/mutter/merge_requests/363
This commit is contained in:
parent
35aa278194
commit
67a3715ded
@ -204,6 +204,19 @@ clutter_stage_cogl_schedule_update (ClutterStageWindow *stage_window,
|
|||||||
|
|
||||||
next_presentation_time = stage_cogl->last_presentation_time + refresh_interval;
|
next_presentation_time = stage_cogl->last_presentation_time + refresh_interval;
|
||||||
|
|
||||||
|
/* Get next_presentation_time closer to its final value, to reduce
|
||||||
|
* the number of while iterations below.
|
||||||
|
*/
|
||||||
|
if (next_presentation_time < now)
|
||||||
|
{
|
||||||
|
int64_t last_virtual_presentation_time = now - now % refresh_interval;
|
||||||
|
int64_t hardware_clock_phase =
|
||||||
|
stage_cogl->last_presentation_time % refresh_interval;
|
||||||
|
|
||||||
|
next_presentation_time =
|
||||||
|
last_virtual_presentation_time + hardware_clock_phase;
|
||||||
|
}
|
||||||
|
|
||||||
while (next_presentation_time < now + min_render_time_allowed)
|
while (next_presentation_time < now + min_render_time_allowed)
|
||||||
next_presentation_time += refresh_interval;
|
next_presentation_time += refresh_interval;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user