Ken Thomases : winecoreaudio:
Simplify handling of BEGIN+ENDLOOP wave headers.
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Dec 21 10:36:31 CST 2006
Module: wine
Branch: master
Commit: 551f7d94a3a0855774c65b7b4b62cf5ca25d6352
URL: http://source.winehq.org/git/wine.git/?a=commit;h=551f7d94a3a0855774c65b7b4b62cf5ca25d6352
Author: Ken Thomases <ken at codeweavers.com>
Date: Thu Dec 21 03:48:23 2006 -0600
winecoreaudio: Simplify handling of BEGIN+ENDLOOP wave headers.
---
dlls/winmm/winecoreaudio/audio.c | 22 ++++++++--------------
1 files changed, 8 insertions(+), 14 deletions(-)
diff --git a/dlls/winmm/winecoreaudio/audio.c b/dlls/winmm/winecoreaudio/audio.c
index d28759b..9e26c31 100644
--- a/dlls/winmm/winecoreaudio/audio.c
+++ b/dlls/winmm/winecoreaudio/audio.c
@@ -935,6 +935,7 @@ static void wodHelper_BeginWaveHdr(WINE_
static LPWAVEHDR wodHelper_PlayPtrNext(WINE_WAVEOUT* wwo)
{
LPWAVEHDR lpWaveHdr;
+ BOOL didLoopBack = FALSE;
pthread_mutex_lock(&wwo->lock);
@@ -953,24 +954,17 @@ static LPWAVEHDR wodHelper_PlayPtrNext(W
{
wwo->dwLoops--;
wwo->lpPlayPtr = wwo->lpLoopPtr;
- } else
+ didLoopBack = TRUE;
+ }
+ else
{
- /* Handle overlapping loops correctly */
- if (wwo->lpLoopPtr != lpWaveHdr && (lpWaveHdr->dwFlags & WHDR_BEGINLOOP)) {
- /* shall we consider the END flag for the closing loop or for
- * the opening one or for both ???
- * code assumes for closing loop only
- */
- } else
- {
- lpWaveHdr = lpWaveHdr->lpNext;
- }
wwo->lpLoopPtr = NULL;
- wodHelper_BeginWaveHdr(wwo, lpWaveHdr);
}
- } else
+ }
+
+ if (!didLoopBack)
{
- /* We're not in a loop. Advance to the next wave header */
+ /* We didn't loop back. Advance to the next wave header */
wodHelper_BeginWaveHdr(wwo, lpWaveHdr = lpWaveHdr->lpNext);
}
More information about the wine-cvs
mailing list