1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-24 17:49:52 +01:00

Only stop the OpenGL renderer when inactive, fixes black screen issue with GDI

This commit is contained in:
Toni Spets 2011-07-05 21:30:08 +03:00
parent 517eef41dc
commit 233aa94adf

21
main.c
View File

@ -152,13 +152,17 @@ HRESULT __stdcall ddraw_RestoreDisplayMode(IDirectDrawImpl *This)
return DD_OK; return DD_OK;
} }
EnterCriticalSection(&This->cs); /* only stop drawing in GL mode when minimized */
This->render.run = FALSE; if (This->renderer == render_main)
ReleaseSemaphore(ddraw->render.sem, 1, NULL); {
LeaveCriticalSection(&This->cs); EnterCriticalSection(&This->cs);
This->render.run = FALSE;
ReleaseSemaphore(ddraw->render.sem, 1, NULL);
LeaveCriticalSection(&This->cs);
WaitForSingleObject(This->render.thread, INFINITE); WaitForSingleObject(This->render.thread, INFINITE);
This->render.thread = NULL; This->render.thread = NULL;
}
if(!ddraw->windowed) if(!ddraw->windowed)
{ {
@ -442,13 +446,12 @@ ULONG __stdcall ddraw_Release(IDirectDrawImpl *This)
if(This->render.run) if(This->render.run)
{ {
EnterCriticalSection(&This->cs); EnterCriticalSection(&This->cs);
This->render.run = FALSE; This->render.run = FALSE;
ReleaseSemaphore(ddraw->render.sem, 1, NULL); ReleaseSemaphore(ddraw->render.sem, 1, NULL);
LeaveCriticalSection(&This->cs);
WaitForSingleObject(This->render.thread, INFINITE); WaitForSingleObject(This->render.thread, INFINITE);
This->render.thread = NULL; This->render.thread = NULL;
LeaveCriticalSection(&This->cs);
} }
if(This->render.hDC) if(This->render.hDC)