summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Belt <andrewpbelt@gmail.com>2022-11-02 04:18:09 -0400
committerAndrew Belt <andrewpbelt@gmail.com>2022-11-02 04:18:09 -0400
commit0609ef0ebbf9bcba155d3b3ae7b9893491cca149 (patch)
tree2ff6e2ba201234f5ee46a675fa4972df0521607a
parent36c9c1232ef8ad3906dee01a7c4e60bd90e64f4b (diff)
Refactor MenuLabel frame rate math in MenuBar.
-rw-r--r--src/app/MenuBar.cpp23
1 files changed, 13 insertions, 10 deletions
diff --git a/src/app/MenuBar.cpp b/src/app/MenuBar.cpp
index eb8dd108..122c92e6 100644
--- a/src/app/MenuBar.cpp
+++ b/src/app/MenuBar.cpp
@@ -881,22 +881,24 @@ struct HelpButton : MenuButton {
struct MeterLabel : ui::Label {
- int frameIndex = 0;
+ int frameCount = 0;
double frameDurationTotal = 0.0;
- double frameDurationAvg = 0.0;
- double uiLastTime = 0.0;
- double uiLastThreadTime = 0.0;
- double uiFrac = 0.0;
+ double frameDurationAvg = NAN;
+ // double uiLastTime = 0.0;
+ // double uiLastThreadTime = 0.0;
+ // double uiFrac = 0.0;
void step() override {
// Compute frame rate
double frameDuration = APP->window->getLastFrameDuration();
- frameDurationTotal += frameDuration;
- frameIndex++;
+ if (std::isfinite(frameDuration)) {
+ frameDurationTotal += frameDuration;
+ frameCount++;
+ }
if (frameDurationTotal >= 1.0) {
- frameDurationAvg = frameDurationTotal / frameIndex;
+ frameDurationAvg = frameDurationTotal / frameCount;
frameDurationTotal = 0.0;
- frameIndex = 0;
+ frameCount = 0;
}
// Compute UI thread CPU
@@ -909,9 +911,10 @@ struct MeterLabel : ui::Label {
// uiLastTime = time;
// }
+ double fps = std::isfinite(frameDurationAvg) ? 1.0 / frameDurationAvg : 0.0;
double meterAverage = APP->engine->getMeterAverage();
double meterMax = APP->engine->getMeterMax();
- text = string::f("%.1f fps %.1f%% avg %.1f%% max", 1.0 / frameDurationAvg, meterAverage * 100, meterMax * 100);
+ text = string::f("%.1f fps %.1f%% avg %.1f%% max", fps, meterAverage * 100, meterMax * 100);
Label::step();
}
};