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:
parent
2784f83ddc
commit
a6af34fbff
@ -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();
|
||||
|
2
src/dd.c
2
src/dd.c
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user