Sebastian Lackner : mmdevapi: Use InitOnce to initialize audio drivers.

Alexandre Julliard julliard at winehq.org
Thu Jul 20 12:11:29 CDT 2017


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

Author: Sebastian Lackner <sebastian at fds-team.de>
Date:   Fri Feb 17 09:34:25 2017 +0100

mmdevapi: Use InitOnce to initialize audio drivers.

Signed-off-by: Sebastian Lackner <sebastian at fds-team.de>
Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
(cherry picked from commit db0518507a595fbad33e47c1afe54edcf6a50b5d)
Signed-off-by: Michael Stefaniuc <mstefani at winehq.org>

---

 dlls/mmdevapi/main.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/dlls/mmdevapi/main.c b/dlls/mmdevapi/main.c
index 110c802..4246758 100644
--- a/dlls/mmdevapi/main.c
+++ b/dlls/mmdevapi/main.c
@@ -109,7 +109,7 @@ static BOOL load_driver(const WCHAR *name, DriverFuncs *driver)
     return TRUE;
 }
 
-static BOOL init_driver(void)
+static BOOL WINAPI init_driver(INIT_ONCE *once, void *param, void **context)
 {
     static const WCHAR drv_value[] = {'A','u','d','i','o',0};
 
@@ -120,9 +120,6 @@ static BOOL init_driver(void)
     HKEY key;
     WCHAR reg_list[256], *p, *next, *driver_list = default_list;
 
-    if(drvs.module)
-        return TRUE;
-
     if(RegOpenKeyW(HKEY_CURRENT_USER, drv_keyW, &key) == ERROR_SUCCESS){
         DWORD size = sizeof(reg_list);
 
@@ -276,10 +273,11 @@ static IClassFactoryImpl MMDEVAPI_CF[] = {
 
 HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
 {
+    static INIT_ONCE init_once = INIT_ONCE_STATIC_INIT;
     unsigned int i = 0;
     TRACE("(%s, %s, %p)\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv);
 
-    if(!init_driver()){
+    if(!InitOnceExecuteOnce(&init_once, init_driver, NULL, NULL)) {
         ERR("Driver initialization failed\n");
         return E_FAIL;
     }




More information about the wine-cvs mailing list