summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorHugo Locurcio <hugo.locurcio@hugo.pro>2018-05-17 02:02:35 +0200
committerHugo Locurcio <hugo.locurcio@hugo.pro>2018-05-18 11:49:21 +0200
commit228ae60a63df4190028a34648290417982c0d268 (patch)
tree3ed8c257c7a40c8c3ca0d62e980e1d8b3b3823bb /main
parent942e0c483247af1e84b7992be48f8ef6317d45c6 (diff)
Make the performance reporting update frequency customizable
The default update frequency has been changed from 1000ms to 250ms.
Diffstat (limited to 'main')
-rw-r--r--main/main.cpp18
-rw-r--r--main/main.h2
2 files changed, 14 insertions, 6 deletions
diff --git a/main/main.cpp b/main/main.cpp
index c287bc81cb..9b62081378 100644
--- a/main/main.cpp
+++ b/main/main.cpp
@@ -1729,7 +1729,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;
@@ -1848,10 +1848,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) {
@@ -1867,8 +1876,7 @@ bool Main::iteration() {
idle_process_max = 0;
physics_process_max = 0;
- frame %= 1000000;
- frames = 0;
+ frame %= update_frequency * 1000;
}
if (fixed_fps != -1)
diff --git a/main/main.h b/main/main.h
index c20592bf3b..8f264d7720 100644
--- a/main/main.h
+++ b/main/main.h
@@ -44,7 +44,7 @@ class Main {
static void print_help(const char *p_binary);
static uint64_t last_ticks;
static uint64_t target_ticks;
- static uint32_t frames;
+ static Array frame_times;
static uint32_t frame;
static bool force_redraw_requested;