Jörg Höhle : winmm: MCI system commands are not eligible for auto-open.

Alexandre Julliard julliard at winehq.org
Mon Apr 12 09:54:09 CDT 2010


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

Author: Jörg Höhle <hoehle at users.sourceforge.net>
Date:   Sun Mar 28 20:34:03 2010 +0200

winmm: MCI system commands are not eligible for auto-open.

---

 dlls/winmm/mci.c |   18 ++++++++++--------
 1 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/dlls/winmm/mci.c b/dlls/winmm/mci.c
index cde8c88..cef3872 100644
--- a/dlls/winmm/mci.c
+++ b/dlls/winmm/mci.c
@@ -1232,8 +1232,10 @@ DWORD WINAPI mciSendStringW(LPCWSTR lpstrCommand, LPWSTR lpstrRet,
     LPCWSTR		lpCmd = 0;
     static const WCHAR  wszNew[] = {'n','e','w',0};
     static const WCHAR  wszSAliasS[] = {' ','a','l','i','a','s',' ',0};
-    static const WCHAR  wszTypeS[] = {'t','y','p','e',' ',0};
+    static const WCHAR  wszTypeS[]   = {'t','y','p','e',' ',0};
     static const WCHAR  wszSysinfo[] = {'s','y','s','i','n','f','o',0};
+    static const WCHAR  wszSound[]   = {'s','o','u','n','d',0};
+    static const WCHAR  wszBreak[]   = {'b','r','e','a','k',0};
 
     TRACE("(%s, %p, %d, %p)\n", 
           debugstr_w(lpstrCommand), lpstrRet, uRetLen, hwndCallback);
@@ -1341,6 +1343,8 @@ DWORD WINAPI mciSendStringW(LPCWSTR lpstrCommand, LPWSTR lpstrRet,
 	    if (wmd)
 		data[4] = wmd->wType;
 	}
+    } else if (!strcmpW(verb, wszSound) || !strcmpW(verb, wszBreak)) {
+	/* Prevent auto-open for system commands. */
     } else if ((MCI_ALL_DEVICE_ID != uDevID) && !(wmd = MCI_GetDriver(mciGetDeviceIDW(dev)))) {
 	/* auto open */
         static const WCHAR wszOpenWait[] = {'o','p','e','n',' ','%','s',' ','w','a','i','t',0};
@@ -1882,11 +1886,10 @@ static	DWORD MCI_Break(UINT wDevID, DWORD dwFlags, LPMCI_BREAK_PARMS lpParms)
     DWORD	dwRet = 0;
 
     if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    FIXME("(%04x) vkey %04X stub\n", dwFlags, lpParms->nVirtKey);
 
-    if (dwFlags & MCI_NOTIFY)
-	mciDriverNotify((HWND)lpParms->dwCallback, wDevID,
-                        (dwRet == 0) ? MCI_NOTIFY_SUCCESSFUL : MCI_NOTIFY_FAILURE);
-
+    if (MMSYSERR_NOERROR==dwRet && (dwFlags & MCI_NOTIFY))
+        mciDriverNotify((HWND)lpParms->dwCallback, wDevID, MCI_NOTIFY_SUCCESSFUL);
     return dwRet;
 }
 
@@ -1903,10 +1906,9 @@ static	DWORD MCI_Sound(UINT wDevID, DWORD dwFlags, LPMCI_SOUND_PARMSW lpParms)
         dwRet = sndPlaySoundW(lpParms->lpstrSoundName, SND_SYNC) ? MMSYSERR_NOERROR : MMSYSERR_ERROR;
     else
         dwRet = MMSYSERR_ERROR; /* what should be done ??? */
-    if (dwFlags & MCI_NOTIFY)
-	mciDriverNotify((HWND)lpParms->dwCallback, wDevID,
-                        (dwRet == 0) ? MCI_NOTIFY_SUCCESSFUL : MCI_NOTIFY_FAILURE);
 
+    if (MMSYSERR_NOERROR==dwRet && (dwFlags & MCI_NOTIFY))
+        mciDriverNotify((HWND)lpParms->dwCallback, wDevID, MCI_NOTIFY_SUCCESSFUL);
     return dwRet;
 }
 




More information about the wine-cvs mailing list