[PATCH] dsound: Don't use lrintf if it's not available.
Alex Henrie <[email protected]>
| Newsgroups | gmane.comp.emulators.wine.patches |
|---|---|
| Message-ID | <[email protected]> |
Signed-off-by: Alex Henrie <[email protected]> --- 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 } static inline SHORT f_to_16(float value) @@ -129,7 +133,11 @@ static inline SHORT f_to_16(float value) return 0x8000; if(value >= 1.f * 0x7FFF / 0x8000) return 0x7FFF; +#ifdef HAVE_LRINTF return le16(lrintf(value * 0x8000)); +#else + return le16(value * 0x8000); +#endif } static LONG f_to_24(float value) @@ -138,7 +146,11 @@ static LONG f_to_24(float value) return 0x80000000; if(value >= 1.f * 0x7FFFFF / 0x800000) return 0x7FFFFF00; +#ifdef HAVE_LRINTF return lrintf(value * 0x80000000U); +#else + return value * 0x80000000U; +#endif } static inline LONG f_to_32(float value) @@ -147,7 +159,11 @@ static inline LONG f_to_32(float value) return 0x80000000; if(value >= 1.f * 0x7FFFFFFF / 0x80000000U) /* this rounds to 1.f */ return 0x7FFFFFFF; +#ifdef HAVE_LRINTF return le32(lrintf(value * 0x80000000U)); +#else + return le32(value * 0x80000000U); +#endif } void putieee32(const IDirectSoundBufferImpl *dsb, DWORD pos, DWORD channel, float value) -- 2.14.2