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

limit fps also with maxfps=0

This commit is contained in:
FunkyFr3sh 2023-10-02 02:19:21 +02:00
parent 5060752adb
commit bbf529f6ef
2 changed files with 7 additions and 4 deletions

View File

@ -1189,7 +1189,9 @@ HRESULT dd_WaitForVerticalBlank(DWORD dwFlags, HANDLE hEvent)
{ {
if (g_config.maxgameticks == -2) if (g_config.maxgameticks == -2)
{ {
BOOL open = !(g_config.maxfps < 0 || (g_config.vsync && g_config.maxfps >= g_ddraw->mode.dmDisplayFrequency)); BOOL open =
!(g_config.maxfps < 0 ||
(g_config.vsync && (!g_config.maxfps || g_config.maxfps >= g_ddraw->mode.dmDisplayFrequency));
if (fpsl_dwm_flush() || fpsl_wait_for_vblank(open)) if (fpsl_dwm_flush() || fpsl_wait_for_vblank(open))
return DD_OK; return DD_OK;

View File

@ -14,7 +14,7 @@ void fpsl_init()
g_fpsl.tick_length_ns = 0; g_fpsl.tick_length_ns = 0;
g_fpsl.tick_length = 0; g_fpsl.tick_length = 0;
if (max_fps < 0 || (g_config.vsync && g_config.maxfps >= g_ddraw->mode.dmDisplayFrequency)) if (max_fps < 0 || (g_config.vsync && (!g_config.maxfps || g_config.maxfps >= g_ddraw->mode.dmDisplayFrequency)))
max_fps = g_ddraw->mode.dmDisplayFrequency; max_fps = g_ddraw->mode.dmDisplayFrequency;
if (max_fps > 1000) if (max_fps > 1000)
@ -125,7 +125,8 @@ void fpsl_frame_start()
void fpsl_frame_end() void fpsl_frame_end()
{ {
if (g_config.maxfps < 0 || (g_config.vsync && g_config.maxfps >= g_ddraw->mode.dmDisplayFrequency)) if (g_config.maxfps < 0 ||
(g_config.vsync && (!g_config.maxfps || g_config.maxfps >= g_ddraw->mode.dmDisplayFrequency))
{ {
if (fpsl_dwm_flush() || fpsl_wait_for_vblank(TRUE)) if (fpsl_dwm_flush() || fpsl_wait_for_vblank(TRUE))
return; return;
@ -135,7 +136,7 @@ void fpsl_frame_end()
{ {
if (g_fpsl.htimer) if (g_fpsl.htimer)
{ {
if (g_config.vsync && g_config.maxfps >= g_ddraw->mode.dmDisplayFrequency) if (g_config.vsync && (!g_config.maxfps || g_config.maxfps >= g_ddraw->mode.dmDisplayFrequency)
{ {
WaitForSingleObject(g_fpsl.htimer, g_fpsl.tick_length * 2); WaitForSingleObject(g_fpsl.htimer, g_fpsl.tick_length * 2);
LARGE_INTEGER due_time = { .QuadPart = -g_fpsl.tick_length_ns }; LARGE_INTEGER due_time = { .QuadPart = -g_fpsl.tick_length_ns };