Hi, 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 inspection. Cheers, Daniel _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/wayland-devel