mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-23 08:52:25 +01:00
53 lines
1.3 KiB
C
53 lines
1.3 KiB
C
|
#ifndef FPS_LIMITER_H
|
||
|
#define FPS_LIMITER_H
|
||
|
|
||
|
#include <windows.h>
|
||
|
#include <dwmapi.h>
|
||
|
|
||
|
|
||
|
typedef struct _D3DKMT_WAITFORVERTICALBLANKEVENT {
|
||
|
UINT hAdapter;
|
||
|
UINT hDevice;
|
||
|
UINT VidPnSourceId;
|
||
|
} D3DKMT_WAITFORVERTICALBLANKEVENT;
|
||
|
|
||
|
typedef struct _D3DKMT_OPENADAPTERFROMHDC {
|
||
|
HDC hDc;
|
||
|
UINT hAdapter;
|
||
|
LUID AdapterLuid;
|
||
|
UINT VidPnSourceId;
|
||
|
} D3DKMT_OPENADAPTERFROMHDC;
|
||
|
|
||
|
typedef struct _D3DKMT_CLOSEADAPTER {
|
||
|
UINT hAdapter;
|
||
|
} D3DKMT_CLOSEADAPTER;
|
||
|
|
||
|
typedef struct fps_limiter
|
||
|
{
|
||
|
DWORD tick_start;
|
||
|
DWORD tick_end;
|
||
|
DWORD tick_length;
|
||
|
LONGLONG tick_length_ns;
|
||
|
HANDLE htimer;
|
||
|
LARGE_INTEGER due_time;
|
||
|
D3DKMT_WAITFORVERTICALBLANKEVENT vblank_event;
|
||
|
D3DKMT_OPENADAPTERFROMHDC adapter;
|
||
|
D3DKMT_CLOSEADAPTER close_adapter;
|
||
|
HRESULT(WINAPI* DwmFlush)(VOID);
|
||
|
HRESULT(WINAPI* DwmIsCompositionEnabled)(BOOL*);
|
||
|
NTSTATUS(WINAPI* D3DKMTWaitForVerticalBlankEvent)(const D3DKMT_WAITFORVERTICALBLANKEVENT* Arg1);
|
||
|
NTSTATUS(WINAPI* D3DKMTOpenAdapterFromHdc)(D3DKMT_OPENADAPTERFROMHDC* Arg1);
|
||
|
NTSTATUS(WINAPI* D3DKMTCloseAdapter)(D3DKMT_CLOSEADAPTER* Arg1);
|
||
|
BOOL got_adapter;
|
||
|
} fps_limiter;
|
||
|
|
||
|
extern fps_limiter g_fpsl;
|
||
|
|
||
|
void fpsl_init();
|
||
|
BOOL fpsl_wait_for_vblank();
|
||
|
BOOL fpsl_dwn_is_enabled();
|
||
|
void fpsl_frame_start();
|
||
|
void fpsl_frame_end();
|
||
|
|
||
|
#endif
|