[PATCH weston v2 00/11] Grouped output repaint

Daniel Stone daniels at collabora.com
Wed Mar 1 11:33:59 UTC 2017

I'm submitting v2 of this series after Pekka's review. At this point,
we now keep all time values in absolute timespec structs, only using
normalisation to nsec for relative comparisons. This required the
addition of subtraction helpers, suggested by Pekka, but reimplemented
to work with signed rather than unsigned values.

Doing this required prising apart weston_output::repaint_scheduled
somewhat, which is no bad thing. Previously it was a tri-state:
0 meant that no repaint would happen without damage occurring, and
1 meant that either a repaint was scheduled to occur at a fixed
time in the future, or that the previous repaint had not yet
completed, and a repaint would not occur until the next call to
weston_output_finish_frame. The only way to differentiate the two
was to combine with the state of the output's repaint timer, which
as of this series no longer exists.

repaint_scheduled has now been prised apart into a tri-state enum,
allowing us to differentiate between the latter two cases, and
documented slightly better. This, I think, is no bad thing.

There is also an RFC patch for adjusting repaint timings after
multi-frame repaint-window misses. Previously we would only adjust the
target repaint time by one frame, if we had missed it. If we had missed
the target time by multiple frames, we would schedule a repaint to
happen immediately, instead of at the next repaint window. This patch
changes the behaviour to target the next repaint window regardless of
how many frames we were late.

I am unsure if this behaviour is desirable, so have tagged it RFC: it
does not affect the series, and is something I noticed only by


More information about the wayland-devel mailing list