[PATCH] dsound: Don't use lrintf if it's not available.

Alex Henrie alexhenrie24 at gmail.com
Thu Nov 2 03:24:47 CDT 2017


2017-11-01 13:26 GMT+01:00 Matteo Bruni <matteo.mystral at gmail.com>:
> 2017-10-29 21:59 GMT+01:00 Alex Henrie <alexhenrie24 at gmail.com>:
>> Signed-off-by: Alex Henrie <alexhenrie24 at gmail.com>
>> ---
>> Fixes https://bugs.winehq.org/show_bug.cgi?id=43000
>>
>> lrintf is not part of C89, and we were already using HAVE_LRINTF in
>> msvcrt.
>> ---
>>  dlls/dsound/dsound_convert.c | 16 ++++++++++++++++
>>  1 file changed, 16 insertions(+)
>>
>> diff --git a/dlls/dsound/dsound_convert.c b/dlls/dsound/dsound_convert.c
>> index 6887bae558..ad1aba3737 100644
>> --- a/dlls/dsound/dsound_convert.c
>> +++ b/dlls/dsound/dsound_convert.c
>> @@ -120,7 +120,11 @@ static inline unsigned char f_to_8(float value)
>>          return 0;
>>      if(value >= 1.f * 0x7f / 0x80)
>>          return 0xFF;
>> +#ifdef HAVE_LRINTF
>>      return lrintf((value + 1.f) * 0x80);
>> +#else
>> +    return (value + 1) * 0x80;
>> +#endif
>>  }
>
> The fallback should probably add 0.5f before truncating. Not entirely
> equivalent but probably closer to the original code.
>
> BTW, we also use lrint() in d3dx9, so we might want to fix it there too.
> Actually, wouldn't it be better to add generic lrint() / lrintf()
> fallbacks in libs/port/ instead?

You're right, it would be better to move the lrint and lrintf fallback
implementations from msvcrt to libport. Should I also move the rint,
rintf, llrint, and llrintf fallbacks to libport?

-Alex



More information about the wine-devel mailing list