mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-24 17:49:52 +01:00
#245 allow to limit FPS below refresh rate with vsync enabled
This commit is contained in:
parent
d8982faae7
commit
e7a9c5b095
4
src/dd.c
4
src/dd.c
@ -1189,7 +1189,9 @@ HRESULT dd_WaitForVerticalBlank(DWORD dwFlags, HANDLE hEvent)
|
|||||||
{
|
{
|
||||||
if (g_config.maxgameticks == -2)
|
if (g_config.maxgameticks == -2)
|
||||||
{
|
{
|
||||||
if (fpsl_dwm_flush() || fpsl_wait_for_vblank(g_config.maxfps >= 0 && !g_config.vsync))
|
BOOL open = !(g_config.maxfps < 0 || (g_config.vsync && g_config.maxfps >= g_ddraw->mode.dmDisplayFrequency));
|
||||||
|
|
||||||
|
if (fpsl_dwm_flush() || fpsl_wait_for_vblank(open))
|
||||||
return DD_OK;
|
return DD_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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)
|
if (max_fps < 0 || (g_config.vsync && 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,7 @@ void fpsl_frame_start()
|
|||||||
|
|
||||||
void fpsl_frame_end()
|
void fpsl_frame_end()
|
||||||
{
|
{
|
||||||
if (g_config.maxfps < 0 || g_config.vsync)
|
if (g_config.maxfps < 0 || (g_config.vsync && 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 +135,7 @@ void fpsl_frame_end()
|
|||||||
{
|
{
|
||||||
if (g_fpsl.htimer)
|
if (g_fpsl.htimer)
|
||||||
{
|
{
|
||||||
if (g_config.vsync)
|
if (g_config.vsync && 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 };
|
||||||
|
Loading…
x
Reference in New Issue
Block a user