mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-24 17:49:52 +01:00
adjust gdi renderer for accurateTimers
This commit is contained in:
parent
67ac35cfc4
commit
45c2206946
@ -124,6 +124,7 @@ typedef struct IDirectDrawImpl
|
|||||||
LONG minimized;
|
LONG minimized;
|
||||||
BOOL altenter;
|
BOOL altenter;
|
||||||
BOOL hidecursor;
|
BOOL hidecursor;
|
||||||
|
BOOL accurateTimers;
|
||||||
SpeedLimiter ticksLimiter;
|
SpeedLimiter ticksLimiter;
|
||||||
SpeedLimiter flipLimiter;
|
SpeedLimiter flipLimiter;
|
||||||
SpeedLimiter fpsLimiter;
|
SpeedLimiter fpsLimiter;
|
||||||
|
@ -55,7 +55,7 @@ DWORD WINAPI render_soft_main(void)
|
|||||||
{
|
{
|
||||||
float len = 1000.0f / maxFPS;
|
float len = 1000.0f / maxFPS;
|
||||||
ddraw->fpsLimiter.tickLengthNs = len * 10000;
|
ddraw->fpsLimiter.tickLengthNs = len * 10000;
|
||||||
ddraw->fpsLimiter.ticklength = len;// + 0.5f;
|
ddraw->fpsLimiter.ticklength = len + (ddraw->accurateTimers ? 0.5f : 0.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
while (ddraw->render.run && WaitForSingleObject(ddraw->render.sem, INFINITE) != WAIT_FAILED)
|
while (ddraw->render.run && WaitForSingleObject(ddraw->render.sem, INFINITE) != WAIT_FAILED)
|
||||||
|
@ -40,18 +40,17 @@ void Settings_Load()
|
|||||||
ddraw->vsync = GetBool("vsync", FALSE);
|
ddraw->vsync = GetBool("vsync", FALSE);
|
||||||
ddraw->noactivateapp = GetBool("noactivateapp", FALSE);
|
ddraw->noactivateapp = GetBool("noactivateapp", FALSE);
|
||||||
ddraw->vhack = GetBool("vhack", FALSE);
|
ddraw->vhack = GetBool("vhack", FALSE);
|
||||||
|
ddraw->accurateTimers = GetBool("accuratetimers", FALSE);
|
||||||
|
|
||||||
WindowRect.right = GetInt("width", 0);
|
WindowRect.right = GetInt("width", 0);
|
||||||
WindowRect.bottom = GetInt("height", 0);
|
WindowRect.bottom = GetInt("height", 0);
|
||||||
WindowRect.left = GetInt("posX", -32000);
|
WindowRect.left = GetInt("posX", -32000);
|
||||||
WindowRect.top = GetInt("posY", -32000);
|
WindowRect.top = GetInt("posY", -32000);
|
||||||
|
|
||||||
BOOL accurateTimers = GetBool("accuratetimers", FALSE);
|
|
||||||
|
|
||||||
ddraw->render.maxfps = GetInt("maxfps", 125);
|
ddraw->render.maxfps = GetInt("maxfps", 125);
|
||||||
if (ddraw->render.maxfps <= 1000)
|
if (ddraw->render.maxfps <= 1000)
|
||||||
{
|
{
|
||||||
if (accurateTimers)
|
if (ddraw->accurateTimers)
|
||||||
ddraw->fpsLimiter.hTimer = CreateWaitableTimer(NULL, TRUE, NULL);
|
ddraw->fpsLimiter.hTimer = CreateWaitableTimer(NULL, TRUE, NULL);
|
||||||
//can't fully set it up here due to missing ddraw->mode.dmDisplayFrequency
|
//can't fully set it up here due to missing ddraw->mode.dmDisplayFrequency
|
||||||
}
|
}
|
||||||
@ -59,7 +58,7 @@ void Settings_Load()
|
|||||||
int maxTicks = GetInt("maxgameticks", 0);
|
int maxTicks = GetInt("maxgameticks", 0);
|
||||||
if (maxTicks > 0 && maxTicks <= 1000)
|
if (maxTicks > 0 && maxTicks <= 1000)
|
||||||
{
|
{
|
||||||
if (accurateTimers)
|
if (ddraw->accurateTimers)
|
||||||
ddraw->ticksLimiter.hTimer = CreateWaitableTimer(NULL, TRUE, NULL);
|
ddraw->ticksLimiter.hTimer = CreateWaitableTimer(NULL, TRUE, NULL);
|
||||||
|
|
||||||
float len = 1000.0f / maxTicks;
|
float len = 1000.0f / maxTicks;
|
||||||
@ -68,7 +67,7 @@ void Settings_Load()
|
|||||||
}
|
}
|
||||||
|
|
||||||
//always using 60 fps for flip...
|
//always using 60 fps for flip...
|
||||||
if (accurateTimers)
|
if (ddraw->accurateTimers)
|
||||||
ddraw->flipLimiter.hTimer = CreateWaitableTimer(NULL, TRUE, NULL);
|
ddraw->flipLimiter.hTimer = CreateWaitableTimer(NULL, TRUE, NULL);
|
||||||
|
|
||||||
float flipLen = 1000.0f / 60;
|
float flipLen = 1000.0f / 60;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user