Ken Thomases : winecoreaudio: Extract wodHelper_CheckForLoopBegin() from wodHelper_BeginWaveHdr().

Alexandre Julliard julliard at wine.codeweavers.com
Thu Dec 21 10:36:30 CST 2006


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

Author: Ken Thomases <ken at codeweavers.com>
Date:   Thu Dec 21 03:47:19 2006 -0600

winecoreaudio: Extract wodHelper_CheckForLoopBegin() from wodHelper_BeginWaveHdr().

This refactoring prepares the ground for subsequent refactoring of
wodHelper_BeginWaveHdr.

---

 dlls/winmm/winecoreaudio/audio.c |   53 +++++++++++++++++++++++++------------
 1 files changed, 36 insertions(+), 17 deletions(-)

diff --git a/dlls/winmm/winecoreaudio/audio.c b/dlls/winmm/winecoreaudio/audio.c
index 255f7ab..d28759b 100644
--- a/dlls/winmm/winecoreaudio/audio.c
+++ b/dlls/winmm/winecoreaudio/audio.c
@@ -848,6 +848,40 @@ static DWORD wodUnprepare(WORD wDevID, L
     return MMSYSERR_NOERROR;
 }
 
+
+/**************************************************************************
+* 				wodHelper_CheckForLoopBegin	        [internal]
+*
+* Check if the new waveheader is the beginning of a loop, and set up
+* state if so.
+* This is called with the WAVEOUT lock held.
+* Call from AudioUnit IO thread can't use Wine debug channels.
+*/
+static void wodHelper_CheckForLoopBegin(WINE_WAVEOUT* wwo)
+{
+    LPWAVEHDR lpWaveHdr = wwo->lpPlayPtr;
+
+    if (lpWaveHdr->dwFlags & WHDR_BEGINLOOP)
+    {
+        if (wwo->lpLoopPtr)
+        {
+            if (wwo->warn_on)
+                fprintf(stderr, "warn:winecoreaudio:wodHelper_CheckForLoopBegin Already in a loop. Discarding loop on this header (%p)\n", lpWaveHdr);
+        }
+        else
+        {
+            if (wwo->trace_on)
+                fprintf(stderr, "trace:winecoreaudio:wodHelper_CheckForLoopBegin Starting loop (%dx) with %p\n", lpWaveHdr->dwLoops, lpWaveHdr);
+
+            wwo->lpLoopPtr = lpWaveHdr;
+            /* Windows does not touch WAVEHDR.dwLoops,
+                * so we need to make an internal copy */
+            wwo->dwLoops = lpWaveHdr->dwLoops;
+        }
+    }
+}
+
+
 /**************************************************************************
 * 				wodHelper_BeginWaveHdr          [internal]
 *
@@ -885,24 +919,9 @@ static void wodHelper_BeginWaveHdr(WINE_
         }
         else wwo->state = WINE_WS_PLAYING;
     }
-    
-    if (lpWaveHdr->dwFlags & WHDR_BEGINLOOP)
-    {
-        if (wwo->lpLoopPtr)
-        {
-            if (wwo->warn_on)
-                fprintf(stderr, "warn:winecoreaudio:wodHelper_BeginWaveHdr Already in a loop. Discarding loop on this header (%p)\n", lpWaveHdr);
-        } else
-        {
-            if (wwo->trace_on)
-                fprintf(stderr, "trace:winecoreaudio:wodHelper_BeginWaveHdr Starting loop (%dx) with %p\n", lpWaveHdr->dwLoops, lpWaveHdr);
 
-            wwo->lpLoopPtr = lpWaveHdr;
-            /* Windows does not touch WAVEHDR.dwLoops,
-                * so we need to make an internal copy */
-            wwo->dwLoops = lpWaveHdr->dwLoops;
-        }
-    }
+    wodHelper_CheckForLoopBegin(wwo);
+
     wwo->dwPartialOffset = 0;
 }
 




More information about the wine-cvs mailing list