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

only limit game ticks via unlock if there was never any blt or flip

This commit is contained in:
FunkyFr3sh 2018-11-28 13:40:29 +01:00
parent 8e75c40cc3
commit 14304ff330
2 changed files with 9 additions and 0 deletions

View File

@ -116,6 +116,7 @@ typedef struct IDirectDrawImpl
DWORD ticklength;
BOOL altenter;
BOOL hidecursor;
BOOL limitTicksOnBltOrFlip;
} IDirectDrawImpl;

View File

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