Andrew Eikum : dsound: Don' t change play position if IAudioClient methods fail.

Alexandre Julliard julliard at winehq.org
Fri Nov 22 10:23:06 CST 2013


Module: wine
Branch: master
Commit: ace3c315b891fbfc801ab20303dce08ad1c76e63
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=ace3c315b891fbfc801ab20303dce08ad1c76e63

Author: Andrew Eikum <aeikum at codeweavers.com>
Date:   Thu Nov 21 12:42:41 2013 -0600

dsound: Don't change play position if IAudioClient methods fail.

---

 dlls/dsound/mixer.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/dlls/dsound/mixer.c b/dlls/dsound/mixer.c
index 282808e..43b7dca 100644
--- a/dlls/dsound/mixer.c
+++ b/dlls/dsound/mixer.c
@@ -605,8 +605,6 @@ static void DSOUND_WaveQueue(DirectSoundDevice *device, BOOL force)
 	if(!prebuf_bytes)
 		return;
 
-	device->in_mmdev_bytes += prebuf_bytes;
-
 	if(prebuf_bytes + read_offs_bytes > device->buflen){
 		DWORD chunk_bytes = device->buflen - read_offs_bytes;
 		prebuf_frames = chunk_bytes / device->pwfx->nBlockAlign;
@@ -631,6 +629,8 @@ static void DSOUND_WaveQueue(DirectSoundDevice *device, BOOL force)
 		return;
 	}
 
+	device->in_mmdev_bytes += prebuf_frames * device->pwfx->nBlockAlign;
+
 	/* check if anything wrapped */
 	if(prebuf_bytes > 0){
 		prebuf_frames = prebuf_bytes / device->pwfx->nBlockAlign;
@@ -648,6 +648,7 @@ static void DSOUND_WaveQueue(DirectSoundDevice *device, BOOL force)
 			WARN("ReleaseBuffer failed: %08x\n", hr);
 			return;
 		}
+		device->in_mmdev_bytes += prebuf_frames * device->pwfx->nBlockAlign;
 	}
 
 	TRACE("in_mmdev_bytes now = %i\n", device->in_mmdev_bytes);




More information about the wine-cvs mailing list