1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-24 17:49:52 +01:00

some changes to gdi frameskip

This commit is contained in:
FunkyFr3sh 2018-11-20 14:44:40 +01:00
parent 98ec61d79b
commit ff9bdeaf40

View File

@ -55,19 +55,19 @@ DWORD WINAPI render_soft_main(void)
while (ddraw->render.run && WaitForSingleObject(ddraw->render.sem, INFINITE) != WAIT_FAILED) while (ddraw->render.run && WaitForSingleObject(ddraw->render.sem, INFINITE) != WAIT_FAILED)
{ {
BOOL skipFrame = FALSE;
if (maxFPS > 0) if (maxFPS > 0)
{ {
DWORD curTick = timeGetTime(); DWORD curTick = timeGetTime();
if (lastTick + frameLength > curTick) if (lastTick + frameLength > curTick)
{ skipFrame = TRUE;
SetEvent(ddraw->render.ev); else
continue; lastTick = curTick;
}
lastTick = curTick;
} }
#if _DEBUG #if _DEBUG
DrawFrameInfoStart(); if (!skipFrame) DrawFrameInfoStart();
#endif #endif
EnterCriticalSection(&ddraw->cs); EnterCriticalSection(&ddraw->cs);
@ -113,7 +113,7 @@ DWORD WINAPI render_soft_main(void)
DIB_RGB_COLORS, DIB_RGB_COLORS,
SRCCOPY); SRCCOPY);
} }
else if (!ChildWindowExists && (ddraw->render.width != ddraw->width || ddraw->render.height != ddraw->height)) else if (!skipFrame && !ChildWindowExists && (ddraw->render.width != ddraw->width || ddraw->render.height != ddraw->height))
{ {
StretchDIBits( StretchDIBits(
ddraw->render.hDC, ddraw->render.hDC,
@ -130,7 +130,7 @@ DWORD WINAPI render_soft_main(void)
DIB_RGB_COLORS, DIB_RGB_COLORS,
SRCCOPY); SRCCOPY);
} }
else else if (!skipFrame || ChildWindowExists)
{ {
SetDIBitsToDevice( SetDIBitsToDevice(
ddraw->render.hDC, ddraw->render.hDC,
@ -151,7 +151,7 @@ DWORD WINAPI render_soft_main(void)
LeaveCriticalSection(&ddraw->cs); LeaveCriticalSection(&ddraw->cs);
#if _DEBUG #if _DEBUG
DrawFrameInfoEnd(); if (!skipFrame) DrawFrameInfoEnd();
#endif #endif
SetEvent(ddraw->render.ev); SetEvent(ddraw->render.ev);