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:
parent
f051957ddb
commit
8e75c40cc3
@ -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);
|
||||
|
12
src/main.c
12
src/main.c
@ -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
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user