From e947dae9edf30e562b8178454de3516013201e6b Mon Sep 17 00:00:00 2001 From: FlightlessMango Date: Wed, 12 Feb 2020 05:59:18 +0100 Subject: [PATCH] Fixed fps limiter accuracy --- src/overlay.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/overlay.cpp b/src/overlay.cpp index 97f50703..5b0988e4 100644 --- a/src/overlay.cpp +++ b/src/overlay.cpp @@ -2154,8 +2154,11 @@ static void overlay_DestroySwapchainKHR( void FpsLimiter(){ int64_t now = os_time_get_nano(); sleepTime = targetFrameTime - (now - frameEnd); - this_thread::sleep_for(chrono::nanoseconds(sleepTime - frameOverhead)); - frameOverhead = (now - frameStart); + if ( sleepTime > frameOverhead ) { + int64_t adjustedSleep = sleepTime - frameOverhead; + this_thread::sleep_for(chrono::nanoseconds(adjustedSleep)); + frameOverhead = ((os_time_get_nano() - frameStart) - adjustedSleep + (frameOverhead * 99)) / 100; + } } static VkResult overlay_QueuePresentKHR(