Set toward-zero rounding when updating in alDeferUpdatesSOFT
This commit is contained in:
parent
8a0e0265bc
commit
53572da7de
@ -585,8 +585,19 @@ AL_API ALvoid AL_APIENTRY alDeferUpdatesSOFT(void)
|
||||
ALboolean UpdateSources;
|
||||
ALsource **src, **src_end;
|
||||
ALeffectslot **slot, **slot_end;
|
||||
int fpuState;
|
||||
|
||||
LockContext(Context);
|
||||
#if defined(HAVE_FESETROUND)
|
||||
fpuState = fegetround();
|
||||
fesetround(FE_TOWARDZERO);
|
||||
#elif defined(HAVE__CONTROLFP)
|
||||
fpuState = _controlfp(0, 0);
|
||||
(void)_controlfp(_RC_CHOP, _MCW_RC);
|
||||
#else
|
||||
(void)fpuState;
|
||||
#endif
|
||||
|
||||
Context->DeferUpdates = AL_TRUE;
|
||||
|
||||
/* Make sure all pending updates are performed */
|
||||
@ -619,6 +630,11 @@ AL_API ALvoid AL_APIENTRY alDeferUpdatesSOFT(void)
|
||||
}
|
||||
|
||||
UnlockContext(Context);
|
||||
#if defined(HAVE_FESETROUND)
|
||||
fesetround(fpuState);
|
||||
#elif defined(HAVE__CONTROLFP)
|
||||
_controlfp(fpuState, _MCW_RC);
|
||||
#endif
|
||||
}
|
||||
|
||||
ALCcontext_DecRef(Context);
|
||||
|
Loading…
x
Reference in New Issue
Block a user