[PATCH wayland 4/5] Add support for signed 24.8 decimal numbers

Daniel Stone daniel at fooishbar.org
Wed May 2 08:48:00 PDT 2012


On 2 May 2012 12:57, Pekka Paalanen <ppaalanen at gmail.com> wrote:
> Hmm, any reason for not doing this instead?
>        *p = (int32_t)trunc(d * 256.0)

Wow is that ever embarrassing.

> Also, any rationale in choosing trunc() instead of round() or
> ceil/floor?
> trunc() makes
> 0.9 -> 0
> -0.9 -> 0
> which means the length of "zero" is double the length of any other
> number. No?

Thanks for the review.  I've fixed this now to use trunc(foo * 256.0)
or / 256.0 as appropriate, plus fixed up the sign issues.  There are
some tests in there now for both negative and large numbers and they
seem to work fine.

> Since we use double as the API type, should there not be a check for
> out-of-bounds values? Perhaps even #defined min and max values apps
> could use for their own additional checks. And that raises the
> question, should we have a
>        typedef double signed_24_8;
> which would seem odd at first, but make it apparent on the API
> that you cannot pass just whatever doubles there?

I'm not sure about the typedef, but I've at least put range handling
into the marshalling code so it rejects too-large numbers.  Kristian?

Thanks for the review!


More information about the wayland-devel mailing list