Clutter's master clock is erratic
Clutter's master clock is erratic, which visibly hurts animation smoothness in some cases:
delta(cur_tick) = 17271μs, target = 16666μs
delta(cur_tick) = 16277μs, target = 16666μs
delta(cur_tick) = 16288μs, target = 16666μs
delta(cur_tick) = 17235μs, target = 16666μs
delta(cur_tick) = 17287μs, target = 16666μs
delta(cur_tick) = 16310μs, target = 16666μs
delta(cur_tick) = 16427μs, target = 16666μs
delta(cur_tick) = 17114μs, target = 16666μs
And sometimes can become consistently too fast (e.g. with a benchmark app using swap interval zero):
delta(cur_tick) = 15683μs, target = 16666μs
delta(cur_tick) = 15776μs, target = 16666μs
delta(cur_tick) = 15712μs, target = 16666μs
delta(cur_tick) = 15716μs, target = 16666μs
delta(cur_tick) = 15715μs, target = 16666μs
delta(cur_tick) = 15673μs, target = 16666μs
delta(cur_tick) = 15759μs, target = 16666μs
delta(cur_tick) = 15686μs, target = 16666μs
These numbers show the full extent of the problem using a non-blocking backend. With a blocking backend (e.g. eglnative right now) the problem is somewhat hidden and smoothed by that blocking on vsync/flips. However that's an accidental workaround. The clutter clock should try to be smoother without assuming it will be corrected by external pauses in the main loop.