From eb1c261ac7b3c0a57f2eddb37caf28a40f26e227 Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Wed, 15 Nov 2017 18:42:42 +0100 Subject: [PATCH] revert some changes --- ddraw.dll | Bin 164864 -> 165888 bytes main.c | 43 +++++++++++++++++++++++++++++++++++++++++++ palette.c | 6 ++++++ render.c | 2 +- render_soft.c | 2 +- surface.c | 31 ++++++++++++------------------- 6 files changed, 63 insertions(+), 21 deletions(-) diff --git a/ddraw.dll b/ddraw.dll index a54de685bfdb62debcb5b5620edf7f7abde2853b..fd2497f49dc2a653c96b46ac68fb0bfd5004fe34 100644 GIT binary patch delta 12449 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

J9|{EZ#&Y}8_3medpRcvpH#zRbyJ7sIZ6pP?zg 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 delta 11615 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
(zY0z!S;adahnIha@7`U zA8UWWzQNvPziuDqc-m3#pz_FHC*kFpcBIay8?Jxd@UdaDxeHgzp|dbJwv~NcW6-{? z-K#sN&*Hx44-%E}syiCRRqblie)CQ9ecVM$2Jdz_sB$^JsKvTM-9mktGliX(N8kXH7z!knCdJKBO8ENO%r2L>x`e9lt?_=%uVL+%nUb+Tg|QGD!E-; zgPS|aUE=;^PiBGoXSm#)uv#zj8);FzH*4@|zUs->#-n1%h5lA~4n-lTmvMofaUTNEi z^z*6hpzUkh54M}OcAGoG9)l2@XrE($!v2b#N}%N+aagBX=UbOpuiAgN$H)mN*#8{+ zI{Tt-pW(b=l=(LjR4KF^jC>ul?KtJ?O1y_-Yt7>`{`kB#hQY+f7JSnb-DFb*yoV7+1hGV*aq6tY;$m+d~9oiCtGc?$acy05pZR$ zeUW_~^2Is(cXq%1hW$2NlIpnM@qi=WvBdE@?7G=;5~s>#N2`OXb<@;bm?nhn&PK8E ztd8Z7*?Vf@H3PAW13z*a6x)?MB^s!zIHb<~hiJ)7)0A zeVYB2eUoFWgK7>EKEOW4_Aq7{-!>k^9*r?Q4pW{tujkHNQtb~DhF55L-*092u_xFI z>SiZLWWNEX|yq+J8UChYYYk+QuPKy&_v~C>E zHIh;m=oaagK;Mrender.run = TRUE; + + if (This->renderer == render_dummy_main) + { + if(This->render.thread == NULL) + { + This->render.thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)This->renderer, NULL, 0, NULL); + SetThreadPriority(This->render.thread, THREAD_PRIORITY_BELOW_NORMAL); + } + return DD_OK; + } mouse_unlock(); @@ -289,6 +299,12 @@ HRESULT __stdcall ddraw_SetDisplayMode(IDirectDrawImpl *This, DWORD width, DWORD return DDERR_INVALIDMODE; } } + + if(This->render.thread == NULL) + { + This->render.thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)This->renderer, NULL, 0, NULL); + SetThreadPriority(This->render.thread, THREAD_PRIORITY_BELOW_NORMAL); + } return DD_OK; } @@ -374,6 +390,8 @@ void ToggleFullscreen() LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { + RECT rc = { 0, 0, ddraw->render.width, ddraw->render.height }; + switch(uMsg) { case WM_MOVE: @@ -519,6 +537,19 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) } break; + /* make sure we redraw when WM_PAINT is requested */ + case WM_PAINT: + EnterCriticalSection(&ddraw->cs); + ReleaseSemaphore(ddraw->render.sem, 1, NULL); + LeaveCriticalSection(&ddraw->cs); + break; + + case WM_ERASEBKGND: + EnterCriticalSection(&ddraw->cs); + FillRect(ddraw->render.hDC, &rc, (HBRUSH) GetStockObject(BLACK_BRUSH)); + ReleaseSemaphore(ddraw->render.sem, 1, NULL); + LeaveCriticalSection(&ddraw->cs); + break; } return ddraw->WndProc(hWnd, uMsg, wParam, lParam); @@ -621,6 +652,17 @@ ULONG __stdcall ddraw_Release(IDirectDrawImpl *This) { PostMessage(This->hWnd, WM_USER, 0, 0); } + + if (This->render.thread) + { + EnterCriticalSection(&This->cs); + HANDLE thread = This->render.thread; + This->render.thread = NULL; + ReleaseSemaphore(This->render.sem, 1, NULL); + LeaveCriticalSection(&This->cs); + + WaitForSingleObject(thread, INFINITE); + } if(This->render.hDC) { @@ -729,6 +771,7 @@ HRESULT WINAPI DirectDrawCreate(GUID FAR* lpGUID, LPDIRECTDRAW FAR* lplpDD, IUnk } InitializeCriticalSection(&This->cs); + This->render.sem = CreateSemaphore(NULL, 0, 1, NULL); /* load configuration options from ddraw.ini */ char cwd[MAX_PATH]; diff --git a/palette.c b/palette.c index d50814c..efdfffe 100644 --- a/palette.c +++ b/palette.c @@ -58,6 +58,12 @@ HRESULT __stdcall ddraw_palette_SetEntries(IDirectDrawPaletteImpl *This, DWORD d This->data_rgb[i].rgbReserved = 0; } } + + /* FIXME: only refresh the screen when the primary palette is changed */ + if(ddraw->primary) + { + ReleaseSemaphore(ddraw->render.sem, 1, NULL); + } return DD_OK; } diff --git a/render.c b/render.c index 37869a0..5cc2180 100644 --- a/render.c +++ b/render.c @@ -89,7 +89,7 @@ DWORD WINAPI render_main(void) glEnable(GL_TEXTURE_2D); - while(ddraw->render.thread) + while(ddraw->render.thread && WaitForSingleObject(ddraw->render.sem, INFINITE) != WAIT_FAILED) { scale_w = (float)ddraw->width/tex_width; scale_h = (float)ddraw->height/tex_height; diff --git a/render_soft.c b/render_soft.c index d036c16..71dc188 100644 --- a/render_soft.c +++ b/render_soft.c @@ -95,7 +95,7 @@ DWORD WINAPI render_soft_main(void) frame_len = 1000.0f / ddraw->render.maxfps; } - while (ddraw->render.thread) + while (ddraw->render.thread && WaitForSingleObject(ddraw->render.sem, INFINITE) != WAIT_FAILED) { if(ddraw->render.maxfps > 0) { diff --git a/surface.c b/surface.c index 70db93b..ead1812 100644 --- a/surface.c +++ b/surface.c @@ -44,13 +44,6 @@ ULONG __stdcall ddraw_surface_Release(IDirectDrawSurfaceImpl *This) if(This->Ref == 0) { - if (ddraw->render.thread) - { - HANDLE thread = ddraw->render.thread; - ddraw->render.thread = NULL; - WaitForSingleObject(thread, INFINITE); - } - if(This->caps == DDSCAPS_PRIMARYSURFACE) { EnterCriticalSection(&ddraw->cs); @@ -129,6 +122,8 @@ HRESULT __stdcall ddraw_surface_Blt(IDirectDrawSurfaceImpl *This, LPRECT lpDestR memcpy(to, from, s); LeaveCriticalSection(&ddraw->cs); + + ReleaseSemaphore(ddraw->render.sem, 1, NULL); } else { @@ -212,6 +207,11 @@ HRESULT __stdcall ddraw_surface_Flip(IDirectDrawSurfaceImpl *This, LPDIRECTDRAWS printf("IDirectDrawSurface::Flip(This=%p, ...)\n", This); #endif + if(This->caps & DDSCAPS_PRIMARYSURFACE) + { + ReleaseSemaphore(ddraw->render.sem, 1, NULL); + } + return DD_OK; } @@ -320,11 +320,7 @@ HRESULT __stdcall ddraw_surface_Lock(IDirectDrawSurfaceImpl *This, LPRECT lpDest } #endif - HRESULT ret = ddraw_surface_GetSurfaceDesc(This, lpDDSurfaceDesc); - - //EnterCriticalSection(&ddraw->cs); - - return ret; + return ddraw_surface_GetSurfaceDesc(This, lpDDSurfaceDesc); } HRESULT __stdcall ddraw_surface_ReleaseDC(IDirectDrawSurfaceImpl *This, HDC a) @@ -379,7 +375,10 @@ HRESULT __stdcall ddraw_surface_Unlock(IDirectDrawSurfaceImpl *This, LPVOID lpRe printf("DirectDrawSurface::Unlock(This=%p, lpRect=%p)\n", This, lpRect); #endif - //LeaveCriticalSection(&ddraw->cs); + if(This->caps & DDSCAPS_PRIMARYSURFACE && !(This->flags & DDSD_BACKBUFFERCOUNT)) + { + ReleaseSemaphore(ddraw->render.sem, 1, NULL); + } return DD_OK; } @@ -492,12 +491,6 @@ HRESULT __stdcall ddraw_CreateSurface(IDirectDrawImpl *This, LPDDSURFACEDESC lpD Surface->Ref = 0; ddraw_surface_AddRef(Surface); - if(lpDDSurfaceDesc->ddsCaps.dwCaps & DDSCAPS_PRIMARYSURFACE) - { - This->render.thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)This->renderer, NULL, 0, NULL); - SetThreadPriority(This->render.thread, THREAD_PRIORITY_BELOW_NORMAL); - } - return DD_OK; }