winemac.drv: Use helpers to get and release display device init mutex.

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Ken Thomases <ken@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
feature/deterministic
Zhiyi Zhang 2020-06-11 17:22:24 +08:00 committed by Alexandre Julliard
parent a2fa0e76b1
commit 13e3d8f635
1 changed files with 17 additions and 5 deletions

View File

@ -136,6 +136,21 @@ static CRITICAL_SECTION modes_section = { &critsect_debug, -1, 0, 0, 0, 0 };
static BOOL inited_original_display_mode;
static HANDLE get_display_device_init_mutex(void)
{
static const WCHAR init_mutexW[] = {'d','i','s','p','l','a','y','_','d','e','v','i','c','e','_','i','n','i','t',0};
HANDLE mutex = CreateMutexW(NULL, FALSE, init_mutexW);
WaitForSingleObject(mutex, INFINITE);
return mutex;
}
static void release_display_device_init_mutex(HANDLE mutex)
{
ReleaseMutex(mutex);
CloseHandle(mutex);
}
static BOOL get_display_device_reg_key(char *key, unsigned len)
{
static const char display_device_guid_prop[] = "__wine_display_device_guid";
@ -1675,7 +1690,6 @@ static void cleanup_devices(void)
*/
void macdrv_init_display_devices(BOOL force)
{
static const WCHAR init_mutexW[] = {'d','i','s','p','l','a','y','_','d','e','v','i','c','e','_','i','n','i','t',0};
HANDLE mutex;
struct macdrv_gpu *gpus = NULL;
struct macdrv_adapter *adapters = NULL;
@ -1691,8 +1705,7 @@ void macdrv_init_display_devices(BOOL force)
LUID gpu_luid;
UINT output_id = 0;
mutex = CreateMutexW(NULL, FALSE, init_mutexW);
WaitForSingleObject(mutex, INFINITE);
mutex = get_display_device_init_mutex();
if (RegCreateKeyExW(HKEY_LOCAL_MACHINE, video_keyW, 0, NULL, REG_OPTION_VOLATILE, KEY_ALL_ACCESS, NULL, &video_hkey,
&disposition))
@ -1760,8 +1773,7 @@ done:
SetupDiDestroyDeviceInfoList(gpu_devinfo);
RegCloseKey(video_hkey);
ReleaseMutex(mutex);
CloseHandle(mutex);
release_display_device_init_mutex(mutex);
macdrv_free_gpus(gpus);
macdrv_free_adapters(adapters);