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();