Andrew Eikum : mmdevapi: Try loading multiple audio drivers from the registry.

Alexandre Julliard julliard at winehq.org
Tue Jul 26 11:37:58 CDT 2011


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

Author: Andrew Eikum <aeikum at codeweavers.com>
Date:   Tue Jul 26 07:58:43 2011 -0500

mmdevapi: Try loading multiple audio drivers from the registry.

---

 dlls/mmdevapi/main.c |   23 +++++++++++++++++------
 1 files changed, 17 insertions(+), 6 deletions(-)

diff --git a/dlls/mmdevapi/main.c b/dlls/mmdevapi/main.c
index f65ea3a..b262e07 100644
--- a/dlls/mmdevapi/main.c
+++ b/dlls/mmdevapi/main.c
@@ -45,6 +45,7 @@
 
 #include "mmdevapi.h"
 #include "wine/debug.h"
+#include "wine/unicode.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(mmdevapi);
 
@@ -99,16 +100,26 @@ static BOOL init_driver(void)
         return TRUE;
 
     if(RegOpenKeyW(HKEY_CURRENT_USER, drv_key, &key) == ERROR_SUCCESS){
-        WCHAR driver_name[256];
+        WCHAR driver_name[256], *p, *next;
         DWORD size = sizeof(driver_name);
 
         if(RegQueryValueExW(key, drv_value, 0, NULL, (BYTE*)driver_name,
-                    &size) == ERROR_SUCCESS){
-            BOOL ret = load_driver(driver_name);
+                    &size) == ERROR_SUCCESS && driver_name[0] != '\0'){
             RegCloseKey(key);
-            if(!ret)
-                ERR("Failed to load driver: %s\n", wine_dbgstr_w(driver_name));
-            return ret;
+
+            for(next = p = driver_name; next; p = next + 1){
+                next = strchrW(p, ',');
+                if(next)
+                    *next = '\0';
+
+                if(load_driver(p))
+                    return TRUE;
+
+                TRACE("Failed to load driver: %s\n", wine_dbgstr_w(driver_name));
+            }
+
+            ERR("No drivers in the registry loaded successfully!\n");
+            return FALSE;
         }
 
         RegCloseKey(key);




More information about the wine-cvs mailing list