[PATCH weston v2 03/11] timespec: Add timespec_to_msec helper
Pekka Paalanen
ppaalanen at gmail.com
Wed Mar 8 11:34:18 UTC 2017
On Wed, 1 Mar 2017 11:34:02 +0000
Daniel Stone <daniels at collabora.com> wrote:
> Paralleling timespec_to_nsec, converts to milliseconds.
>
> Signed-off-by: Daniel Stone <daniels at collabora.com>
> Reviewed-by: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
> ---
> libweston/compositor.c | 2 +-
> shared/timespec-util.h | 11 +++++++++++
> tests/timespec-test.c | 9 +++++++++
> 3 files changed, 21 insertions(+), 1 deletion(-)
>
> v2: No changes.
>
> diff --git a/libweston/compositor.c b/libweston/compositor.c
> index 813f701..a28738e 100644
> --- a/libweston/compositor.c
> +++ b/libweston/compositor.c
> @@ -2388,7 +2388,7 @@ weston_output_finish_frame(struct weston_output *output,
> output->msc,
> presented_flags);
>
> - output->frame_time = stamp->tv_sec * 1000 + stamp->tv_nsec / 1000000;
> + output->frame_time = timespec_to_msec(stamp);
>
> weston_compositor_read_presentation_clock(compositor, &now);
> timespec_sub(&gone, &now, stamp);
> diff --git a/shared/timespec-util.h b/shared/timespec-util.h
> index 13948b1..c8e3cd6 100644
> --- a/shared/timespec-util.h
> +++ b/shared/timespec-util.h
> @@ -93,6 +93,17 @@ timespec_to_nsec(const struct timespec *a)
> return (int64_t)a->tv_sec * NSEC_PER_SEC + a->tv_nsec;
> }
>
> +/* Convert timespec to milliseconds
> + *
> + * \param a timespec
> + * \return milliseconds
Hi,
might want to note, that this rounds to integer milliseconds towards
zero. It's not round() nor floor(), it's trunc().
Shall I just add that note when merging?
Thanks,
pq
> + */
> +static inline int64_t
> +timespec_to_msec(const struct timespec *a)
> +{
> + return (int64_t)a->tv_sec * 1000 + a->tv_nsec / 1000000;
> +}
> +
> /* Convert milli-Hertz to nanoseconds
> *
> * \param mhz frequency in mHz, not zero
> diff --git a/tests/timespec-test.c b/tests/timespec-test.c
> index cd3b1c1..712d1ac 100644
> --- a/tests/timespec-test.c
> +++ b/tests/timespec-test.c
> @@ -60,6 +60,15 @@ ZUC_TEST(timespec_test, timespec_to_nsec)
> ZUC_ASSERT_EQ(timespec_to_nsec(&a), (NSEC_PER_SEC * 4ULL) + 4);
> }
>
> +ZUC_TEST(timespec_test, timespec_to_msec)
> +{
> + struct timespec a;
> +
> + a.tv_sec = 4;
> + a.tv_nsec = 4000000;
> + ZUC_ASSERT_EQ(timespec_to_msec(&a), (4000ULL) + 4);
> +}
> +
> ZUC_TEST(timespec_test, millihz_to_nsec)
> {
> ZUC_ASSERT_EQ(millihz_to_nsec(60000), 16666666);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 801 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/wayland-devel/attachments/20170308/a75038c7/attachment.sig>
More information about the wayland-devel
mailing list