mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-24 17:49:52 +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;
|
extern fps_limiter g_fpsl;
|
||||||
|
|
||||||
void fpsl_init();
|
void fpsl_init();
|
||||||
BOOL fpsl_wait_for_vblank();
|
BOOL fpsl_wait_for_vblank(BOOL open_adapter);
|
||||||
BOOL fpsl_dwm_flush();
|
BOOL fpsl_dwm_flush();
|
||||||
BOOL fpsl_dwm_is_enabled();
|
BOOL fpsl_dwm_is_enabled();
|
||||||
void fpsl_frame_start();
|
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 (g_ddraw->maxgameticks == -2)
|
||||||
{
|
{
|
||||||
if (fpsl_dwm_flush())
|
if (fpsl_dwm_flush() || fpsl_wait_for_vblank(FALSE))
|
||||||
return DD_OK;
|
return DD_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -76,22 +76,25 @@ void fpsl_init()
|
|||||||
g_fpsl.initialized = TRUE;
|
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 (open_adapter && g_fpsl.D3DKMTOpenAdapterFromHdc && !g_fpsl.got_adapter)
|
||||||
|
|
||||||
if (g_fpsl.D3DKMTOpenAdapterFromHdc(&g_fpsl.adapter) == 0)
|
|
||||||
{
|
{
|
||||||
g_fpsl.vblank_event.hAdapter = g_fpsl.adapter.hAdapter;
|
g_fpsl.adapter.hDc = g_ddraw->render.hdc;
|
||||||
g_fpsl.got_adapter = TRUE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (g_fpsl.got_adapter && g_fpsl.D3DKMTWaitForVerticalBlankEvent)
|
if (g_fpsl.D3DKMTOpenAdapterFromHdc(&g_fpsl.adapter) == 0)
|
||||||
{
|
{
|
||||||
return g_fpsl.D3DKMTWaitForVerticalBlankEvent(&g_fpsl.vblank_event) == 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;
|
return FALSE;
|
||||||
@ -122,7 +125,7 @@ void fpsl_frame_end()
|
|||||||
{
|
{
|
||||||
if (g_ddraw->render.maxfps < 0 || g_ddraw->vsync)
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user