mirror of
https://github.com/brl/mutter.git
synced 2025-02-19 14:44:10 +00:00

If an update (new frame) had been scheduled already before `_clutter_stage_cogl_presented` was called then that means it was scheduled for the wrong time. Because the `last_presentation_time` has changed since then. And using an `update_time` based on an outdated presentation time results in scheduling frames too early, filling the buffer queue (triple buffering or worse) and high visual latency. So if we do receive a presentation event when an update is already scheduled, remember to reschedule the update based on the newer `last_presentation_time`. This way we avoid overfilling the buffer queue and limit ourselves to double buffering for less visible lag. Closes: https://gitlab.gnome.org/GNOME/mutter/issues/334 Prerequisite: https://gitlab.gnome.org/GNOME/mutter/merge_requests/520 https://gitlab.gnome.org/GNOME/mutter/merge_requests/281