diff --git a/inc/fps_limiter.h b/inc/fps_limiter.h index 5c8049f..019c3ef 100644 --- a/inc/fps_limiter.h +++ b/inc/fps_limiter.h @@ -48,6 +48,7 @@ typedef struct FPSLIMITER D3DKMTCLOSEADAPTERPROC D3DKMTCloseAdapter; BOOL got_adapter; BOOL initialized; + BOOL is_wine; } FPSLIMITER; extern FPSLIMITER g_fpsl; diff --git a/src/fps_limiter.c b/src/fps_limiter.c index 094f902..2652598 100644 --- a/src/fps_limiter.c +++ b/src/fps_limiter.c @@ -75,6 +75,8 @@ void fpsl_init() (D3DKMTCLOSEADAPTERPROC)real_GetProcAddress(g_fpsl.gdi32_dll, "D3DKMTCloseAdapter"); } + g_fpsl.is_wine = real_GetProcAddress(GetModuleHandleA("ntdll.dll"), "wine_get_version") != 0; + g_fpsl.initialized = TRUE; } @@ -104,7 +106,12 @@ BOOL fpsl_wait_for_vblank(BOOL open_adapter) BOOL fpsl_dwm_flush() { - return g_fpsl.initialized && fpsl_dwm_is_enabled() && g_fpsl.DwmFlush && SUCCEEDED(g_fpsl.DwmFlush()); + return + g_fpsl.initialized && + fpsl_dwm_is_enabled() && + g_fpsl.DwmFlush && + !g_fpsl.is_wine && + SUCCEEDED(g_fpsl.DwmFlush()); } BOOL fpsl_dwm_is_enabled()