diff options
| author | Max Hilbrunner | 2018-05-26 17:31:52 +0200 |
|---|---|---|
| committer | GitHub | 2018-05-26 17:31:52 +0200 |
| commit | 16974d81d8ce03ea744871757c627aa2f9a0dfc7 (patch) | |
| tree | aab407bfb0e23c28b29e9732cdfcd6952bc178d1 /main/main.cpp | |
| parent | 603af8055accedf63f80d11c0b44febb62ce7d5e (diff) | |
| parent | 228ae60a63df4190028a34648290417982c0d268 (diff) | |
| download | godot-16974d81d8ce03ea744871757c627aa2f9a0dfc7.tar.gz godot-16974d81d8ce03ea744871757c627aa2f9a0dfc7.tar.zst godot-16974d81d8ce03ea744871757c627aa2f9a0dfc7.zip | |
Diffstat (limited to 'main/main.cpp')
| -rw-r--r-- | main/main.cpp | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/main/main.cpp b/main/main.cpp index 70713e2dd..ad49e1f5b 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -1706,7 +1706,7 @@ bool Main::start() { uint64_t Main::last_ticks = 0; uint64_t Main::target_ticks = 0; -uint32_t Main::frames = 0; +Array Main::frame_times = Array(); uint32_t Main::frame = 0; bool Main::force_redraw_requested = false; @@ -1825,10 +1825,19 @@ bool Main::iteration() { script_debugger->idle_poll(); } - frames++; Engine::get_singleton()->_idle_frames++; - if (frame > 1000000) { + // FPS counter + frame_times.push_back(ticks); + int frames = frame_times.size(); + + while (frame_times.size() > 0 && (int)frame_times.get(0) <= ticks - 1000000) { + frame_times.pop_front(); + } + + int update_frequency = MAX(1, (int)GLOBAL_GET("debug/settings/performance/update_frequency_msec")); + + if (frame > update_frequency * 1000) { if (editor || project_manager) { if (print_fps) { @@ -1844,8 +1853,7 @@ bool Main::iteration() { idle_process_max = 0; physics_process_max = 0; - frame %= 1000000; - frames = 0; + frame %= update_frequency * 1000; } if (fixed_fps != -1) |
