From 233aa94adfdc5ef98a5f05c997a93ba3fd243ed5 Mon Sep 17 00:00:00 2001 From: Toni Spets Date: Tue, 5 Jul 2011 21:30:08 +0300 Subject: [PATCH] Only stop the OpenGL renderer when inactive, fixes black screen issue with GDI --- main.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/main.c b/main.c index 015f24a..8fdf397 100644 --- a/main.c +++ b/main.c @@ -152,13 +152,17 @@ HRESULT __stdcall ddraw_RestoreDisplayMode(IDirectDrawImpl *This) return DD_OK; } - EnterCriticalSection(&This->cs); - This->render.run = FALSE; - ReleaseSemaphore(ddraw->render.sem, 1, NULL); - LeaveCriticalSection(&This->cs); + /* only stop drawing in GL mode when minimized */ + if (This->renderer == render_main) + { + EnterCriticalSection(&This->cs); + This->render.run = FALSE; + ReleaseSemaphore(ddraw->render.sem, 1, NULL); + LeaveCriticalSection(&This->cs); - WaitForSingleObject(This->render.thread, INFINITE); - This->render.thread = NULL; + WaitForSingleObject(This->render.thread, INFINITE); + This->render.thread = NULL; + } if(!ddraw->windowed) { @@ -442,13 +446,12 @@ ULONG __stdcall ddraw_Release(IDirectDrawImpl *This) if(This->render.run) { EnterCriticalSection(&This->cs); - This->render.run = FALSE; ReleaseSemaphore(ddraw->render.sem, 1, NULL); + LeaveCriticalSection(&This->cs); + WaitForSingleObject(This->render.thread, INFINITE); This->render.thread = NULL; - - LeaveCriticalSection(&This->cs); } if(This->render.hDC)