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