Module: wine Branch: master Commit: 551f7d94a3a0855774c65b7b4b62cf5ca25d6352 URL: http://source.winehq.org/git/wine.git/?a=commit;h=551f7d94a3a0855774c65b7b4b...
Author: Ken Thomases ken@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); }