1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-15 06:04:49 +01:00

revert LimitGameTicks changes since it's causing flickering in unpatched versions of cnc1 and ra1

This commit is contained in:
FunkyFr3sh 2018-11-28 13:28:07 +01:00
parent f051957ddb
commit 8e75c40cc3
3 changed files with 5 additions and 15 deletions

View File

@ -36,7 +36,7 @@ extern RECT WindowRect;
extern BOOL ChildWindowExists;
BOOL detect_cutscene();
void LimitGameTicks(BOOL isBltOrFlip);
void LimitGameTicks();
DWORD WINAPI render_main(void);
DWORD WINAPI render_soft_main(void);
BOOL CALLBACK EnumChildProc(HWND hWnd, LPARAM lParam);

View File

@ -158,26 +158,18 @@ BOOL detect_cutscene()
return FALSE;
}
void LimitGameTicks(BOOL isBltOrFlip)
void LimitGameTicks()
{
static DWORD nextGameTick;
static DWORD lastBltOrFlipTick;
if (!nextGameTick)
{
nextGameTick = timeGetTime();
return;
}
nextGameTick += ddraw->ticklength;
DWORD tickCount = timeGetTime();
if (isBltOrFlip)
lastBltOrFlipTick = tickCount;
else if (lastBltOrFlipTick + (ddraw->ticklength * 2) >= tickCount)
return;
nextGameTick += ddraw->ticklength;
int sleepTime = nextGameTick - tickCount;
if (sleepTime <= 0 || sleepTime > ddraw->ticklength)
nextGameTick = tickCount;
else

View File

@ -445,7 +445,7 @@ HRESULT __stdcall ddraw_surface_Blt(IDirectDrawSurfaceImpl *This, LPRECT lpDestR
}
if (ddraw->ticklength > 0)
LimitGameTicks(TRUE);
LimitGameTicks();
}
return DD_OK;
@ -688,7 +688,7 @@ HRESULT __stdcall ddraw_surface_Flip(IDirectDrawSurfaceImpl *This, LPDIRECTDRAWS
*/
if (ddraw->ticklength > 0)
LimitGameTicks(TRUE);
LimitGameTicks();
}
return DD_OK;
@ -955,8 +955,6 @@ HRESULT __stdcall ddraw_surface_Unlock(IDirectDrawSurfaceImpl *This, LPVOID lpRe
InterlockedExchange(&ddraw->render.surfaceUpdated, TRUE);
ReleaseSemaphore(ddraw->render.sem, 1, NULL);
if (ddraw->ticklength > 0)
LimitGameTicks(FALSE);
}
return DD_OK;