Module: wine Branch: stable Commit: db393739a7f6646da896a9f23a0b9262e49e55b5 URL: http://source.winehq.org/git/wine.git/?a=commit;h=db393739a7f6646da896a9f23a... Author: Sebastian Lackner <sebastian(a)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(a)fds-team.de> Signed-off-by: Andrew Eikum <aeikum(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> (cherry picked from commit db0518507a595fbad33e47c1afe54edcf6a50b5d) Signed-off-by: Michael Stefaniuc <mstefani(a)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; }