Module: wine Branch: master Commit: ecd13dcbef16ccee9ae7785cc60ec63f5772ae19 URL: http://source.winehq.org/git/wine.git/?a=commit;h=ecd13dcbef16ccee9ae7785cc6...
Author: Andrew Eikum aeikum@codeweavers.com Date: Thu Oct 6 09:35:07 2011 -0500
dsound: Fix fragment position calculations.
---
dlls/dsound/mixer.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/dlls/dsound/mixer.c b/dlls/dsound/mixer.c index 936ea3e..8adbdff 100644 --- a/dlls/dsound/mixer.c +++ b/dlls/dsound/mixer.c @@ -788,7 +788,7 @@ static void DSOUND_WaveQueue(DirectSoundDevice *device, BOOL force) device->pwqueue += prebuf_frags;
prebuf_frames = ((prebuf_frags + wave_fragpos > device->helfrags) ? - (prebuf_frags + wave_fragpos - device->helfrags) : + (device->helfrags - wave_fragpos) : (prebuf_frags)) * device->fraglen / device->pwfx->nBlockAlign;
hr = IAudioRenderClient_GetBuffer(device->render, prebuf_frames, &buffer); @@ -859,8 +859,8 @@ static void DSOUND_PerformMix(DirectSoundDevice *device) return; }
- pos_bytes = (clock_pos / (double)clock_freq) * device->pwfx->nSamplesPerSec * - device->pwfx->nBlockAlign; + pos_bytes = ceil(clock_pos * device->pwfx->nBlockAlign * + (clock_freq / (double)device->pwfx->nSamplesPerSec));
delta_frags = (pos_bytes - device->last_pos_bytes) / device->fraglen; if(delta_frags > 0){