parent
0c6a0fba4b
commit
e19d896dab
1 changed files with 38 additions and 11 deletions
49
src/dd.c
49
src/dd.c
|
@ -541,18 +541,20 @@ HRESULT dd_GetMonitorFrequency(LPDWORD lpdwFreq)
|
|||
|
||||
HRESULT dd_RestoreDisplayMode()
|
||||
{
|
||||
if (g_ddraw.render.run)
|
||||
if (!g_ddraw.render.run)
|
||||
{
|
||||
EnterCriticalSection(&g_ddraw.cs);
|
||||
g_ddraw.render.run = FALSE;
|
||||
ReleaseSemaphore(g_ddraw.render.sem, 1, NULL);
|
||||
LeaveCriticalSection(&g_ddraw.cs);
|
||||
return DD_OK;
|
||||
}
|
||||
|
||||
if (g_ddraw.render.thread)
|
||||
{
|
||||
WaitForSingleObject(g_ddraw.render.thread, INFINITE);
|
||||
g_ddraw.render.thread = NULL;
|
||||
}
|
||||
EnterCriticalSection(&g_ddraw.cs);
|
||||
g_ddraw.render.run = FALSE;
|
||||
ReleaseSemaphore(g_ddraw.render.sem, 1, NULL);
|
||||
LeaveCriticalSection(&g_ddraw.cs);
|
||||
|
||||
if (g_ddraw.render.thread)
|
||||
{
|
||||
WaitForSingleObject(g_ddraw.render.thread, INFINITE);
|
||||
g_ddraw.render.thread = NULL;
|
||||
}
|
||||
|
||||
if (!g_config.windowed)
|
||||
|
@ -1431,7 +1433,32 @@ ULONG dd_Release()
|
|||
cfg_save();
|
||||
}
|
||||
|
||||
dd_RestoreDisplayMode();
|
||||
if (g_ddraw.render.run)
|
||||
{
|
||||
EnterCriticalSection(&g_ddraw.cs);
|
||||
g_ddraw.render.run = FALSE;
|
||||
ReleaseSemaphore(g_ddraw.render.sem, 1, NULL);
|
||||
LeaveCriticalSection(&g_ddraw.cs);
|
||||
|
||||
if (g_ddraw.render.thread)
|
||||
{
|
||||
WaitForSingleObject(g_ddraw.render.thread, INFINITE);
|
||||
g_ddraw.render.thread = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if (!g_config.windowed)
|
||||
{
|
||||
if (g_ddraw.renderer == d3d9_render_main && !g_config.nonexclusive)
|
||||
{
|
||||
if (!d3d9_reset(TRUE))
|
||||
d3d9_release();
|
||||
}
|
||||
else
|
||||
{
|
||||
ChangeDisplaySettings(NULL, 0);
|
||||
}
|
||||
}
|
||||
|
||||
if (g_ddraw.render.hdc)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue