libweston: assert frame times never go backwards
Adding this check was prompted by https://gitlab.freedesktop.org/wayland/weston/-/merge_requests/609 There is no reason to allow frame times jump backwards, and apparently we already have code that makes that assumption. DRM KMS uses CLOCK_MONOTONIC as the vblank and page flip timestamps, which by definition cannot go backwards. Other backends call weston_compositor_set_presentation_clock_software(). Frame times are also reported directly to Wayland clients via presentation-time extension, and clients too will not expect that the timestamp could go backwards. So make sure time can never go backwards. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
This commit is contained in:
parent
bc7c8332df
commit
98b4e20a68
@ -3003,7 +3003,15 @@ weston_output_finish_frame(struct weston_output *output,
|
||||
int64_t msec_rel;
|
||||
|
||||
assert(output->repaint_status == REPAINT_AWAITING_COMPLETION);
|
||||
assert(stamp || (presented_flags & WP_PRESENTATION_FEEDBACK_INVALID));
|
||||
|
||||
/*
|
||||
* If timestamp of latest vblank is given, it must always go forwards.
|
||||
* If not given, INVALID flag must be set.
|
||||
*/
|
||||
if (stamp)
|
||||
assert(timespec_sub_to_nsec(stamp, &output->frame_time) >= 0);
|
||||
else
|
||||
assert(presented_flags & WP_PRESENTATION_FEEDBACK_INVALID);
|
||||
|
||||
weston_compositor_read_presentation_clock(compositor, &now);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user