impr: Unlock frame rate for the first 5 seconds after startup

This commit is contained in:
WerWolv
2025-07-11 13:37:15 +02:00
parent 8c59684c14
commit 2432462ff3

View File

@@ -273,13 +273,13 @@ namespace hex {
void Window::loop() {
glfwShowWindow(m_window);
double returnToIdleTime = 0;
double returnToIdleTime = 5.0;
constexpr static auto IdleFPS = 5.0;
constexpr static auto FrameRateUnlockDuration = 1;
double idleFrameTime = 1.0 / IdleFPS;
double targetFrameTime = idleFrameTime;
double targetFrameTime = -1.0;
double longestExceededFrameTime = 0.0;
while (!glfwWindowShouldClose(m_window)) {
const auto maxFPS = ImHexApi::System::getTargetFPS();
@@ -306,6 +306,10 @@ namespace hex {
}
}();
if (targetFrameTime < 0) {
targetFrameTime = maxFrameTime;
}
auto frameTimeStart = glfwGetTime();
glfwPollEvents();
@@ -388,6 +392,11 @@ namespace hex {
longestExceededFrameTime = std::max(exceedTime, longestExceededFrameTime);
m_waitEventsBlocked = false;
if (std::fmod(longestExceededFrameTime, 5.0) < 0.01) {
// Reset the longest exceeded frame time every 5 seconds
longestExceededFrameTime = 0.0;
}
while (frameTime < maxFrameTime) {
frameTime = glfwGetTime() - frameTimeStart;
}