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;
|
ALboolean UpdateSources;
|
||||||
ALsource **src, **src_end;
|
ALsource **src, **src_end;
|
||||||
ALeffectslot **slot, **slot_end;
|
ALeffectslot **slot, **slot_end;
|
||||||
|
int fpuState;
|
||||||
|
|
||||||
LockContext(Context);
|
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;
|
Context->DeferUpdates = AL_TRUE;
|
||||||
|
|
||||||
/* Make sure all pending updates are performed */
|
/* Make sure all pending updates are performed */
|
||||||
@ -619,6 +630,11 @@ AL_API ALvoid AL_APIENTRY alDeferUpdatesSOFT(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
UnlockContext(Context);
|
UnlockContext(Context);
|
||||||
|
#if defined(HAVE_FESETROUND)
|
||||||
|
fesetround(fpuState);
|
||||||
|
#elif defined(HAVE__CONTROLFP)
|
||||||
|
_controlfp(fpuState, _MCW_RC);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
ALCcontext_DecRef(Context);
|
ALCcontext_DecRef(Context);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user