mirror of
https://github.com/scummvm/scummvm.git
synced 2026-06-20 05:45:29 +00:00
Originally authored by @magicmyth in PR #1039 ScummVM is optimised to render frames when something changes on screen. As some host environments can perform poorly if the app does not reliably refresh its output regularly (notably Steam overlay) this new option ensures that Scummvm outputs a minimal amount of frames even if nothing is changing in the game renderer. Currently this is only implemented in the SDL OpenGL renderer. The new config option is called force-frame-update and it takes a integer value representing the desired minimum milliseconds Scummvm should wait before forcing a screen update/refresh. E.g: 50. Note that the rendering system will not force a re-draw of a frame if the app has rendered a changed frame within the desired minimum refresh. Thus if the app is outputting 30fps and force-frame-update is set to 100ms (~10fps) then no duplicate frame will be shown (in theory). As this is implemented in OpenGLSdlGraphicsManager::updateScreen() OpenGLGraphicsManager::_forceRedraw has had its access changed to *protected* so that it can be access by it's descendant. The reason this has been done in OpenGLSdlGraphicsManager::updateScreen() is so SDL_GetTicks() can be used to track the elapsed time. If it is useful for other platforms using OpenGL to have this feature it could be implemented within OpenGLGraphicsManager::updateScreen() provided a suitable platform independent replacement for SDL_GetTicks() is used. This would potentially be better as OpenGLSdlGraphicsManager checks various other states when deciding if the screen should update.