diff --git a/src/d_main.c b/src/d_main.c index 91a42ff140dd60277b5b70edb1f82587753354cd..3566e7f3d27d15a880a4ebea27c0b8ce1148a4c3 100644 --- a/src/d_main.c +++ b/src/d_main.c @@ -895,7 +895,11 @@ void D_SRB2Loop(void) if (!singletics) { INT64 elapsed = (INT64)(finishprecise - enterprecise); - if (elapsed > 0 && (INT64)capbudget > elapsed) + + // in the case of "match refresh rate" + vsync, don't sleep at all + const boolean vsync_with_match_refresh = cv_vidwait.value && cv_fpscap.value == 0; + + if (elapsed > 0 && (INT64)capbudget > elapsed && !vsync_with_match_refresh) { I_SleepDuration(capbudget - (finishprecise - enterprecise)); }