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