[Scummvm-cvs-logs] SF.net SVN: scummvm:[33944] residual/trunk/engine
aquadran at users.sourceforge.net
aquadran at users.sourceforge.net
Sat Aug 16 19:54:14 CEST 2008
Revision: 33944
http://scummvm.svn.sourceforge.net/scummvm/?rev=33944&view=rev
Author: aquadran
Date: 2008-08-16 17:54:14 +0000 (Sat, 16 Aug 2008)
Log Message:
-----------
changed code for limit speed for main loop
Modified Paths:
--------------
residual/trunk/engine/engine.cpp
residual/trunk/engine/engine.h
Modified: residual/trunk/engine/engine.cpp
===================================================================
--- residual/trunk/engine/engine.cpp 2008-08-16 15:24:52 UTC (rev 33943)
+++ residual/trunk/engine/engine.cpp 2008-08-16 17:54:14 UTC (rev 33944)
@@ -69,7 +69,7 @@
_textSpeed = 7;
_mode = _previousMode = ENGINE_MODE_IDLE;
_flipEnable = true;
- _lastUpdateTime = 0;
+ _speedLimitMs = 33;
_refreshDrawNeeded = true;
g_fslist = NULL;
g_fsdir = NULL;
@@ -232,8 +232,6 @@
_frameStart = newStart;
return;
}
- if (newStart - _frameStart < 30)
- return;
_frameTime = newStart - _frameStart;
_frameStart = newStart;
@@ -256,17 +254,6 @@
}
void Engine::updateDisplayScene() {
- uint32 newTime = g_driver->getMillis();
- if (newTime < _lastUpdateTime) {
- _lastUpdateTime = newTime;
- _doFlip = false;
- }
- if (newTime - _lastUpdateTime < 30) {
- _doFlip = false;
- return;
- }
- _lastUpdateTime = newTime;
-
_doFlip = true;
if (_mode == ENGINE_MODE_SMUSH) {
@@ -387,13 +374,10 @@
if (_doFlip && _flipEnable)
g_driver->flipBuffer();
- // don't kill CPU
- g_driver->delayMillis(10);
-
if (SHOWFPS_GLOBAL && _doFlip && _mode != ENGINE_MODE_DRAW) {
_frameCounter++;
_timeAccum += _frameTime;
- if (_timeAccum > 1000) {
+ if (_timeAccum > 500) {
sprintf(_fps, "%7.2f", (double)(_frameCounter * 1000) / (double)_timeAccum );
_frameCounter = 0;
_timeAccum = 0;
@@ -415,6 +399,8 @@
_refreshShadowMask = false;
for (;;) {
+ uint32 startTime = g_driver->getMillis();
+
if (_savegameLoadRequest) {
savegameRestore();
}
@@ -425,8 +411,11 @@
g_imuse->flushTracks();
g_imuse->refreshScripts();
- if (_mode == ENGINE_MODE_IDLE)
+ if (_mode == ENGINE_MODE_IDLE) {
+ // don't kill CPU
+ g_driver->delayMillis(10);
continue;
+ }
// Process events
Driver::Event event;
@@ -458,6 +447,15 @@
g_imuse->setMusicState(g_imuseState);
g_imuseState = -1;
}
+
+ uint32 endTime = g_driver->getMillis();
+ if (startTime > endTime)
+ continue;
+ uint32 diffTime = endTime - startTime;
+ if (diffTime < _speedLimitMs) {
+ uint32 delayTime = _speedLimitMs - diffTime;
+ g_driver->delayMillis(delayTime);
+ }
}
}
Modified: residual/trunk/engine/engine.h
===================================================================
--- residual/trunk/engine/engine.h 2008-08-16 15:24:52 UTC (rev 33943)
+++ residual/trunk/engine/engine.h 2008-08-16 17:54:14 UTC (rev 33944)
@@ -194,7 +194,6 @@
int _speechMode;
int _textSpeed;
bool _flipEnable;
- uint32 _lastUpdateTime;
bool _refreshDrawNeeded;
char _fps[8];
bool _doFlip;
@@ -205,6 +204,7 @@
int _prevSmushFrame;
unsigned int _frameCounter;
unsigned int _timeAccum;
+ unsigned _speedLimitMs;
bool *_controlsEnabled;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list