Commit f4b032b1 authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

winemac: Use pthread for display locking.

parent 5387718c
...@@ -53,14 +53,7 @@ static const WCHAR pixelencodingW[] = {'P','i','x','e','l','E','n','c','o','d',' ...@@ -53,14 +53,7 @@ static const WCHAR pixelencodingW[] = {'P','i','x','e','l','E','n','c','o','d','
static CFArrayRef modes; static CFArrayRef modes;
static BOOL modes_has_8bpp, modes_has_16bpp; static BOOL modes_has_8bpp, modes_has_16bpp;
static int default_mode_bpp; static int default_mode_bpp;
static CRITICAL_SECTION modes_section; static pthread_mutex_t modes_mutex = PTHREAD_MUTEX_INITIALIZER;
static CRITICAL_SECTION_DEBUG critsect_debug =
{
0, 0, &modes_section,
{ &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
0, 0, { (DWORD_PTR)(__FILE__ ": modes_section") }
};
static CRITICAL_SECTION modes_section = { &critsect_debug, -1, 0, 0, 0, 0 };
static BOOL inited_original_display_mode; static BOOL inited_original_display_mode;
...@@ -515,8 +508,6 @@ static int get_default_bpp(void) ...@@ -515,8 +508,6 @@ static int get_default_bpp(void)
{ {
int ret; int ret;
EnterCriticalSection(&modes_section);
if (!default_mode_bpp) if (!default_mode_bpp)
{ {
CGDisplayModeRef mode = CGDisplayCopyDisplayMode(kCGDirectMainDisplay); CGDisplayModeRef mode = CGDisplayCopyDisplayMode(kCGDirectMainDisplay);
...@@ -532,8 +523,6 @@ static int get_default_bpp(void) ...@@ -532,8 +523,6 @@ static int get_default_bpp(void)
ret = default_mode_bpp; ret = default_mode_bpp;
LeaveCriticalSection(&modes_section);
TRACE(" -> %d\n", ret); TRACE(" -> %d\n", ret);
return ret; return ret;
} }
...@@ -895,7 +884,9 @@ LONG macdrv_ChangeDisplaySettingsEx(LPCWSTR devname, LPDEVMODEW devmode, ...@@ -895,7 +884,9 @@ LONG macdrv_ChangeDisplaySettingsEx(LPCWSTR devname, LPDEVMODEW devmode,
return DISP_CHANGE_FAILED; return DISP_CHANGE_FAILED;
} }
pthread_mutex_lock(&modes_mutex);
bpp = get_default_bpp(); bpp = get_default_bpp();
pthread_mutex_unlock(&modes_mutex);
if ((devmode->dmFields & DM_BITSPERPEL) && devmode->dmBitsPerPel != bpp) if ((devmode->dmFields & DM_BITSPERPEL) && devmode->dmBitsPerPel != bpp)
TRACE("using default %d bpp instead of caller's request %d bpp\n", bpp, devmode->dmBitsPerPel); TRACE("using default %d bpp instead of caller's request %d bpp\n", bpp, devmode->dmBitsPerPel);
...@@ -1088,7 +1079,7 @@ BOOL macdrv_EnumDisplaySettingsEx(LPCWSTR devname, DWORD mode, DEVMODEW *devmode ...@@ -1088,7 +1079,7 @@ BOOL macdrv_EnumDisplaySettingsEx(LPCWSTR devname, DWORD mode, DEVMODEW *devmode
{ {
DWORD count, i; DWORD count, i;
EnterCriticalSection(&modes_section); pthread_mutex_lock(&modes_mutex);
if (mode == 0 || !modes) if (mode == 0 || !modes)
{ {
...@@ -1168,7 +1159,7 @@ BOOL macdrv_EnumDisplaySettingsEx(LPCWSTR devname, DWORD mode, DEVMODEW *devmode ...@@ -1168,7 +1159,7 @@ BOOL macdrv_EnumDisplaySettingsEx(LPCWSTR devname, DWORD mode, DEVMODEW *devmode
} }
} }
LeaveCriticalSection(&modes_section); pthread_mutex_unlock(&modes_mutex);
} }
if (!display_mode) if (!display_mode)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment