From a1fe6d6899c5ed4cf13c16f9d6bcd64958ab8254 Mon Sep 17 00:00:00 2001 From: Fabio Alessandrelli Date: Fri, 7 May 2021 14:06:46 +0200 Subject: [HTML5] Fix target_fps when window loses focus. We don't get updates when the window is unfocused/minimized, so we must detect the situation where the counted ticks start drifting away resulting in more frames drawn than needed. This commit adds a check to ensure that the target ticks do not drift away more than one second. --- platform/javascript/javascript_main.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'platform/javascript') diff --git a/platform/javascript/javascript_main.cpp b/platform/javascript/javascript_main.cpp index 0fe95b0a8f..40771d1882 100644 --- a/platform/javascript/javascript_main.cpp +++ b/platform/javascript/javascript_main.cpp @@ -66,6 +66,11 @@ void main_loop_callback() { int target_fps = Engine::get_singleton()->get_target_fps(); if (target_fps > 0) { + if (current_ticks - target_ticks > 1000000) { + // When the window loses focus, we stop getting updates and accumulate delay. + // For this reason, if the difference is too big, we reset target ticks to the current ticks. + target_ticks = current_ticks; + } target_ticks += (uint64_t)(1000000 / target_fps); } if (os->main_loop_iterate()) { -- cgit v1.2.3