[Scummvm-git-logs] scummvm master -> e39ad8730d5a9fe80ec44b3ea8b5fc87f7010735

aquadran noreply at scummvm.org
Wed Jul 23 22:12:01 UTC 2025


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .

Summary:
e39ad8730d WINTERMUTE: Replace loop delay with FrameLimiter


Commit: e39ad8730d5a9fe80ec44b3ea8b5fc87f7010735
    https://github.com/scummvm/scummvm/commit/e39ad8730d5a9fe80ec44b3ea8b5fc87f7010735
Author: Paweł Kołodziejski (aquadran at gmail.com)
Date: 2025-07-24T00:11:56+02:00

Commit Message:
WINTERMUTE: Replace loop delay with FrameLimiter

Changed paths:
    engines/wintermute/wintermute.cpp


diff --git a/engines/wintermute/wintermute.cpp b/engines/wintermute/wintermute.cpp
index aa239d09ecd..9f436a4d5c9 100644
--- a/engines/wintermute/wintermute.cpp
+++ b/engines/wintermute/wintermute.cpp
@@ -30,6 +30,8 @@
 #include "common/tokenizer.h"
 #include "common/translation.h"
 
+#include "graphics/framelimiter.h"
+
 #include "engines/wintermute/ad/ad_game.h"
 #include "engines/wintermute/wintermute.h"
 #include "engines/wintermute/debugger.h"
@@ -280,13 +282,11 @@ int WintermuteEngine::init() {
 
 int WintermuteEngine::messageLoop() {
 	bool done = false;
+	uint32 maxFPS = ConfMan.getInt("engine_speed");
+	if (maxFPS == 0)
+		maxFPS = 60;
+	Graphics::FrameLimiter limiter(g_system, maxFPS);
 
-	uint32 prevTime = _system->getMillis();
-	uint32 time = _system->getMillis();
-	uint32 diff = 0;
-
-	const uint32 maxFPS = 60;
-	const uint32 frameTime = 2 * (uint32)((1.0 / maxFPS) * 1000);
 	while (!done) {
 		if (!_game) {
 			break;
@@ -303,20 +303,15 @@ int WintermuteEngine::messageLoop() {
 
 			_game->displayDebugInfo();
 
-			time = _system->getMillis();
-			diff = time - prevTime;
-			if (frameTime > diff) { // Avoid overflows
-				_system->delayMillis(frameTime - diff);
-			}
-
 			// ***** flip
+			limiter.delayBeforeSwap();
 			if (!_game->getSuspendedRendering()) {
 				_game->_renderer->flip();
 			}
+			limiter.startFrame();
 			if (_game->getIsLoading()) {
 				_game->loadGame(_game->_scheduledLoadSlot);
 			}
-			prevTime = time;
 		}
 		if (shouldQuit()) {
 			break;




More information about the Scummvm-git-logs mailing list