[Scummvm-cvs-logs] CVS: scummvm/sky sky.cpp,1.187,1.188

Robert Göffringmann lavosspawn at users.sourceforge.net
Tue Dec 13 07:06:03 CET 2005


Update of /cvsroot/scummvm/scummvm/sky
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3273/sky

Modified Files:
	sky.cpp 
Log Message:
changed delay code

Index: sky.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/sky.cpp,v
retrieving revision 1.187
retrieving revision 1.188
diff -u -d -r1.187 -r1.188
--- sky.cpp	13 Dec 2005 14:31:13 -0000	1.187
+++ sky.cpp	13 Dec 2005 15:05:06 -0000	1.188
@@ -244,6 +244,7 @@
 
 	_lastSaveTime = _system->getMillis();
 
+	uint32 delayCount = _system->getMillis();
 	while (!_systemVars.quitGame) {
 		if (_debugger->isAttached())
 			_debugger->onFrame();
@@ -260,10 +261,13 @@
 		_skySound->checkFxQueue();
 		_skyMouse->mouseEngine((uint16)_mouseX, (uint16)_mouseY);
 		handleKey();
-		while (_systemVars.paused) {
-			_system->updateScreen();
-			delay(300);
-			handleKey();
+		if (_systemVars.paused) {
+			do {
+				_system->updateScreen();
+				delay(50);
+				handleKey();
+			} while (_systemVars.paused);
+			delayCount = _system->getMillis();
 		}
 
 		_skyLogic->engine();
@@ -279,8 +283,15 @@
 			delay(0);
 		else if (_fastMode & 1)
 			delay(10);
-		else
-			delay((frameTime + _systemVars.gameSpeed) - _system->getMillis());
+		else {
+			delayCount += _systemVars.gameSpeed;
+			int needDelay = delayCount - (int)_system->getMillis();
+			if ((needDelay < 0) || (needDelay > 4 * _systemVars.gameSpeed)) {
+				needDelay = 0;
+				delayCount = _system->getMillis();
+			}
+			delay(needDelay);
+		}
 	}
 
 	_skyControl->showGameQuitMsg();





More information about the Scummvm-git-logs mailing list