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

optional wait_for_vblank on flip

This commit is contained in:
FunkyFr3sh 2021-02-22 09:09:21 +01:00
parent 2784f83ddc
commit a6af34fbff
3 changed files with 18 additions and 15 deletions

View File

@ -53,7 +53,7 @@ typedef struct fps_limiter
extern fps_limiter g_fpsl;
void fpsl_init();
BOOL fpsl_wait_for_vblank();
BOOL fpsl_wait_for_vblank(BOOL open_adapter);
BOOL fpsl_dwm_flush();
BOOL fpsl_dwm_is_enabled();
void fpsl_frame_start();

View File

@ -706,7 +706,7 @@ HRESULT dd_WaitForVerticalBlank(DWORD dwFlags, HANDLE h)
{
if (g_ddraw->maxgameticks == -2)
{
if (fpsl_dwm_flush())
if (fpsl_dwm_flush() || fpsl_wait_for_vblank(FALSE))
return DD_OK;
}

View File

@ -76,22 +76,25 @@ void fpsl_init()
g_fpsl.initialized = TRUE;
}
BOOL fpsl_wait_for_vblank()
BOOL fpsl_wait_for_vblank(BOOL open_adapter)
{
if (g_fpsl.initialized && g_fpsl.D3DKMTOpenAdapterFromHdc && !g_fpsl.got_adapter)
if (g_fpsl.initialized)
{
g_fpsl.adapter.hDc = g_ddraw->render.hdc;
if (g_fpsl.D3DKMTOpenAdapterFromHdc(&g_fpsl.adapter) == 0)
if (open_adapter && g_fpsl.D3DKMTOpenAdapterFromHdc && !g_fpsl.got_adapter)
{
g_fpsl.vblank_event.hAdapter = g_fpsl.adapter.hAdapter;
g_fpsl.got_adapter = TRUE;
}
}
g_fpsl.adapter.hDc = g_ddraw->render.hdc;
if (g_fpsl.got_adapter && g_fpsl.D3DKMTWaitForVerticalBlankEvent)
{
return g_fpsl.D3DKMTWaitForVerticalBlankEvent(&g_fpsl.vblank_event) == 0;
if (g_fpsl.D3DKMTOpenAdapterFromHdc(&g_fpsl.adapter) == 0)
{
g_fpsl.vblank_event.hAdapter = g_fpsl.adapter.hAdapter;
g_fpsl.got_adapter = TRUE;
}
}
if (g_fpsl.got_adapter && g_fpsl.D3DKMTWaitForVerticalBlankEvent)
{
return g_fpsl.D3DKMTWaitForVerticalBlankEvent(&g_fpsl.vblank_event) == 0;
}
}
return FALSE;
@ -122,7 +125,7 @@ void fpsl_frame_end()
{
if (g_ddraw->render.maxfps < 0 || g_ddraw->vsync)
{
if (fpsl_dwm_flush() || fpsl_wait_for_vblank())
if (fpsl_dwm_flush() || fpsl_wait_for_vblank(TRUE))
return;
}