parent
0c6a0fba4b
commit
e19d896dab
1 changed files with 38 additions and 11 deletions
33
src/dd.c
33
src/dd.c
|
@ -541,8 +541,11 @@ HRESULT dd_GetMonitorFrequency(LPDWORD lpdwFreq)
|
||||||
|
|
||||||
HRESULT dd_RestoreDisplayMode()
|
HRESULT dd_RestoreDisplayMode()
|
||||||
{
|
{
|
||||||
if (g_ddraw.render.run)
|
if (!g_ddraw.render.run)
|
||||||
{
|
{
|
||||||
|
return DD_OK;
|
||||||
|
}
|
||||||
|
|
||||||
EnterCriticalSection(&g_ddraw.cs);
|
EnterCriticalSection(&g_ddraw.cs);
|
||||||
g_ddraw.render.run = FALSE;
|
g_ddraw.render.run = FALSE;
|
||||||
ReleaseSemaphore(g_ddraw.render.sem, 1, NULL);
|
ReleaseSemaphore(g_ddraw.render.sem, 1, NULL);
|
||||||
|
@ -553,7 +556,6 @@ HRESULT dd_RestoreDisplayMode()
|
||||||
WaitForSingleObject(g_ddraw.render.thread, INFINITE);
|
WaitForSingleObject(g_ddraw.render.thread, INFINITE);
|
||||||
g_ddraw.render.thread = NULL;
|
g_ddraw.render.thread = NULL;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (!g_config.windowed)
|
if (!g_config.windowed)
|
||||||
{
|
{
|
||||||
|
@ -1431,7 +1433,32 @@ ULONG dd_Release()
|
||||||
cfg_save();
|
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)
|
if (g_ddraw.render.hdc)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue