Andrew Eikum : mmdevapi: Disable sound if the user explicitly selects no driver.

Alexandre Julliard julliard at winehq.org
Tue Aug 23 12:45:01 CDT 2011


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

Author: Andrew Eikum <aeikum at codeweavers.com>
Date:   Mon Aug 22 14:16:04 2011 -0500

mmdevapi: Disable sound if the user explicitly selects no driver.

This also tweaks the no-driver behavior to report 0 active devices
instead of returning an error code.

---

 dlls/mmdevapi/devenum.c |    6 +++---
 dlls/mmdevapi/main.c    |    5 ++++-
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/dlls/mmdevapi/devenum.c b/dlls/mmdevapi/devenum.c
index 7acc3f6..8a71262 100644
--- a/dlls/mmdevapi/devenum.c
+++ b/dlls/mmdevapi/devenum.c
@@ -445,6 +445,9 @@ static HRESULT load_driver_devices(EDataFlow flow)
     UINT num, def, i;
     HRESULT hr;
 
+    if(!drvs.pGetEndpointIDs)
+        return S_OK;
+
     hr = drvs.pGetEndpointIDs(flow, &ids, &keys, &num, &def);
     if(FAILED(hr))
         return hr;
@@ -824,9 +827,6 @@ HRESULT MMDevEnum_Create(REFIID riid, void **ppv)
 {
     MMDevEnumImpl *This = MMDevEnumerator;
 
-    if(!drvs.pGetAudioEndpoint)
-        return AUDCLNT_E_SERVICE_NOT_RUNNING;
-
     if (!This)
     {
         This = HeapAlloc(GetProcessHeap(), 0, sizeof(*This));
diff --git a/dlls/mmdevapi/main.c b/dlls/mmdevapi/main.c
index 3063a11..c694c6e 100644
--- a/dlls/mmdevapi/main.c
+++ b/dlls/mmdevapi/main.c
@@ -104,9 +104,12 @@ static BOOL init_driver(void)
         DWORD size = sizeof(driver_name);
 
         if(RegQueryValueExW(key, drv_value, 0, NULL, (BYTE*)driver_name,
-                    &size) == ERROR_SUCCESS && driver_name[0] != '\0'){
+                    &size) == ERROR_SUCCESS){
             RegCloseKey(key);
 
+            if(driver_name[0] == '\0')
+                return TRUE;
+
             for(next = p = driver_name; next; p = next + 1){
                 next = strchrW(p, ',');
                 if(next)




More information about the wine-cvs mailing list