Skip to content

Sync timelines to hardware vsync

Daniel van Vugt requested to merge vanvugt/mutter:smoother-timelines into gnome-3-36

Previously clutter timelines advanced according to g_source_get_time. But that meant the spatial stepping of animations was visibly sensitive to any irregularities in the main loop. It also represented a time older [1] than the intended presentation time of each frame.

Now we instead use master_clock_get_next_presentation_time. This ensures we get the smoothness of hardware vsync as well as being closer to the actual presentation time.

This means, for example, backends like Xorg that move the hardware cursor independently of repaints will have their animations more closely matching the hardware cursor position. So the cursor appears to stick more closely when dragging windows or on the lock screen etc.

[1] "older" = (refresh_interval - sync_delay) = ~14ms for 60Hz

Closes: #25 (closed)

Edited by Daniel van Vugt

Merge request reports