mirror of
https://github.com/WerWolv/ImHex.git
synced 2026-03-28 07:47:03 -05:00
impr: Unlock frame rate for the first 5 seconds after startup
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user