Damjan Jovanovic : mmsystem.dll16: Use flags instead of device type as the MCI_STATUS heuristic.

Alexandre Julliard julliard at winehq.org
Thu May 12 13:57:51 CDT 2011


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

Author: Damjan Jovanovic <damjan.jov at gmail.com>
Date:   Wed May 11 22:07:24 2011 +0200

mmsystem.dll16: Use flags instead of device type as the MCI_STATUS heuristic.

---

 dlls/mmsystem.dll16/mci16.c |   23 ++++++-----------------
 1 files changed, 6 insertions(+), 17 deletions(-)

diff --git a/dlls/mmsystem.dll16/mci16.c b/dlls/mmsystem.dll16/mci16.c
index 27ae01d..3d9c73f 100644
--- a/dlls/mmsystem.dll16/mci16.c
+++ b/dlls/mmsystem.dll16/mci16.c
@@ -128,21 +128,10 @@ static LPWSTR MCI_strdupAtoW( LPCSTR str )
     return ret;
 }
 
-static DWORD MCI_get_device_type(UINT16 deviceId)
-{
-    MCI_GETDEVCAPS_PARMS parms;
-    MCIERROR err;
-
-    err = mciSendCommandW(deviceId, MCI_GETDEVCAPS, MCI_GETDEVCAPS_DEVICE_TYPE | MCI_WAIT, (DWORD_PTR)&parms);
-    if (err != MMSYSERR_NOERROR)
-        return MCI_DEVTYPE_OTHER;
-    return parms.dwReturn;
-}
-
 /**************************************************************************
  * 			MCI_MapMsg16To32W			[internal]
  */
-static MMSYSTEM_MapType	MCI_MapMsg16To32W(UINT16 wDevID, WORD wMsg, DWORD dwFlags, DWORD_PTR* lParam)
+static MMSYSTEM_MapType	MCI_MapMsg16To32W(WORD wMsg, DWORD dwFlags, DWORD_PTR* lParam)
 {
     if (*lParam == 0)
 	return MMSYSTEM_MAP_OK;
@@ -204,7 +193,7 @@ static MMSYSTEM_MapType	MCI_MapMsg16To32W(UINT16 wDevID, WORD wMsg, DWORD dwFlag
         return MMSYSTEM_MAP_OKMEM;
     case MCI_STATUS:
         {
-            if (MCI_get_device_type(wDevID) == MCI_DEVTYPE_DIGITAL_VIDEO) {
+            if (dwFlags & (MCI_DGV_STATUS_REFERENCE | MCI_DGV_STATUS_DISKSPACE)) {
                 LPMCI_DGV_STATUS_PARMSW mdsp32w = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
                     sizeof(LPMCI_DGV_STATUS_PARMS16) + sizeof(MCI_DGV_STATUS_PARMSW));
                 LPMCI_DGV_STATUS_PARMS16 mdsp16 = MapSL(*lParam);
@@ -394,7 +383,7 @@ static MMSYSTEM_MapType	MCI_MapMsg16To32W(UINT16 wDevID, WORD wMsg, DWORD dwFlag
 /**************************************************************************
  * 			MCI_UnMapMsg16To32W			[internal]
  */
-static  MMSYSTEM_MapType	MCI_UnMapMsg16To32W(UINT16 wDevID, WORD wMsg, DWORD dwFlags, DWORD_PTR lParam)
+static  MMSYSTEM_MapType	MCI_UnMapMsg16To32W(WORD wMsg, DWORD dwFlags, DWORD_PTR lParam)
 {
     switch (wMsg) {
 	/* case MCI_CAPTURE */
@@ -443,7 +432,7 @@ static  MMSYSTEM_MapType	MCI_UnMapMsg16To32W(UINT16 wDevID, WORD wMsg, DWORD dwF
         }
         return MMSYSTEM_MAP_OK;
     case MCI_STATUS:
-        if (lParam && MCI_get_device_type(wDevID) == MCI_DEVTYPE_DIGITAL_VIDEO) {
+        if (lParam && (dwFlags & (MCI_DGV_STATUS_REFERENCE | MCI_DGV_STATUS_DISKSPACE))) {
             LPMCI_DGV_STATUS_PARMSW mdsp32w = (LPMCI_DGV_STATUS_PARMSW)lParam;
             char *base = (char*)lParam - sizeof(LPMCI_DGV_STATUS_PARMS16);
             LPMCI_DGV_STATUS_PARMS16 mdsp16 = *(LPMCI_DGV_STATUS_PARMS16*)base;
@@ -759,7 +748,7 @@ DWORD WINAPI mciSendCommand16(UINT16 wDevID, UINT16 wMsg, DWORD dwParam1, DWORD
 
 	dwRet = MCIERR_INVALID_DEVICE_ID;
 
-        switch (res = MCI_MapMsg16To32W(wDevID, wMsg, dwParam1, &dwParam2)) {
+        switch (res = MCI_MapMsg16To32W(wMsg, dwParam1, &dwParam2)) {
         case MMSYSTEM_MAP_MSGERROR:
             TRACE("%s not handled yet\n", MCI_MessageToString(wMsg));
             dwRet = MCIERR_DRIVER_INTERNAL;
@@ -772,7 +761,7 @@ DWORD WINAPI mciSendCommand16(UINT16 wDevID, UINT16 wMsg, DWORD dwParam1, DWORD
         case MMSYSTEM_MAP_OKMEM:
             dwRet = mciSendCommandW(wDevID, wMsg, dwParam1, dwParam2);
             if (res == MMSYSTEM_MAP_OKMEM)
-                MCI_UnMapMsg16To32W(wDevID, wMsg, dwParam1, dwParam2);
+                MCI_UnMapMsg16To32W(wMsg, dwParam1, dwParam2);
             break;
         }
     }




More information about the wine-cvs mailing list