From 7a12e6ddcf9957bf87849a2a9b39dee5ba2e849d Mon Sep 17 00:00:00 2001 From: Eblo <7004497+Eblo@users.noreply.github.com> Date: Fri, 20 Oct 2023 12:32:43 -0400 Subject: [PATCH] Graphics.transition average FPS bugfix Move average FPS update logic into new function updateAvgFPS() Call this during Graphics.transition so that the FPS counter does not erroneously drop --- src/display/graphics.cpp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/display/graphics.cpp b/src/display/graphics.cpp index 348a7134..3546dff2 100644 --- a/src/display/graphics.cpp +++ b/src/display/graphics.cpp @@ -1083,14 +1083,7 @@ struct GraphicsPrivate { swapGLBuffer(); - SDL_LockMutex(avgFPSLock); - if (avgFPSData.size() > 40) - avgFPSData.erase(avgFPSData.begin()); - - double time = shState->runTime(); - avgFPSData.push_back(time - last_avg_update); - last_avg_update = time; - SDL_UnlockMutex(avgFPSLock); + updateAvgFPS(); } void checkSyncLock() { @@ -1130,6 +1123,17 @@ struct GraphicsPrivate { SDL_UnlockMutex(glResourceLock); } + + void updateAvgFPS() { + SDL_LockMutex(avgFPSLock); + if (avgFPSData.size() > 40) + avgFPSData.erase(avgFPSData.begin()); + + double time = shState->runTime(); + avgFPSData.push_back(time - last_avg_update); + last_avg_update = time; + SDL_UnlockMutex(avgFPSLock); + } }; Graphics::Graphics(RGSSThreadData *data) { @@ -1309,6 +1313,8 @@ void Graphics::transition(int duration, const char *filename, int vague) { GLMeta::blitEnd(); p->swapGLBuffer(); + /* Call this manually, as redrawScreen() is not called during this loop. */ + p->updateAvgFPS(); } glState.blend.pop();