From 551f7d94a3a0855774c65b7b4b62cf5ca25d6352 Mon Sep 17 00:00:00 2001 From: Ken Thomases Date: Thu, 21 Dec 2006 03:48:23 -0600 Subject: [PATCH] winecoreaudio: Simplify handling of BEGIN+ENDLOOP wave headers. --- dlls/winmm/winecoreaudio/audio.c | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/dlls/winmm/winecoreaudio/audio.c b/dlls/winmm/winecoreaudio/audio.c index d28759bf544..9e26c31a380 100644 --- a/dlls/winmm/winecoreaudio/audio.c +++ b/dlls/winmm/winecoreaudio/audio.c @@ -935,6 +935,7 @@ static void wodHelper_BeginWaveHdr(WINE_WAVEOUT* wwo, LPWAVEHDR lpWaveHdr) 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(WINE_WAVEOUT* wwo) { 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); } -- 2.11.4.GIT