Aric Stewart : winecoreaudio: Implement WIDM_GETPOS.

Alexandre Julliard julliard at winehq.org
Wed Nov 28 08:01:47 CST 2007


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

Author: Aric Stewart <aric at codeweavers.com>
Date:   Wed Nov 28 19:37:58 2007 +0900

winecoreaudio: Implement WIDM_GETPOS.

---

 dlls/winecoreaudio.drv/audio.c |   24 ++++++++++++++++++++++++
 1 files changed, 24 insertions(+), 0 deletions(-)

diff --git a/dlls/winecoreaudio.drv/audio.c b/dlls/winecoreaudio.drv/audio.c
index a831bf7..ee089ab 100644
--- a/dlls/winecoreaudio.drv/audio.c
+++ b/dlls/winecoreaudio.drv/audio.c
@@ -2129,6 +2129,29 @@ static DWORD widStop(WORD wDevID)
     return ret;
 }
 
+/**************************************************************************
+ *                      widGetPos                                 [internal]
+ */
+static DWORD widGetPos(WORD wDevID, LPMMTIME lpTime, UINT size)
+{
+    DWORD		    val;
+    WINE_WAVEIN*    wwi;
+
+    TRACE("(%u);\n", wDevID);
+    if (wDevID >= MAX_WAVEINDRV)
+    {
+        WARN("invalid device ID\n");
+        return MMSYSERR_INVALHANDLE;
+    }
+
+    wwi = &WInDev[wDevID];
+
+    OSSpinLockLock(&WInDev[wDevID].lock);
+    val = wwi->dwTotalRecorded;
+    OSSpinLockUnlock(&WInDev[wDevID].lock);
+
+    return bytes_to_mmtime(lpTime, val, &wwi->format);
+}
 
 /**************************************************************************
  *                      widReset                                [internal]
@@ -2283,6 +2306,7 @@ DWORD WINAPI CoreAudio_widMessage(WORD wDevID, WORD wMsg, DWORD dwUser,
         case WIDM_RESET:            return widReset         (wDevID);
         case WIDM_START:            return widStart         (wDevID);
         case WIDM_STOP:             return widStop          (wDevID);
+        case WIDM_GETPOS:           return widGetPos        (wDevID, (LPMMTIME)dwParam1, (UINT)dwParam2  );
         case DRV_QUERYDEVICEINTERFACESIZE: return widDevInterfaceSize       (wDevID, (LPDWORD)dwParam1);
         case DRV_QUERYDEVICEINTERFACE:     return widDevInterface           (wDevID, (PWCHAR)dwParam1, dwParam2);
         case DRV_QUERYDSOUNDIFACE:  return widDsCreate   (wDevID, (PIDSCDRIVER*)dwParam1);




More information about the wine-cvs mailing list