[Scummvm-cvs-logs] CVS: residual engine.cpp,1.83,1.84
Torbjörn Andersson
eriktorbjorn at users.sourceforge.net
Fri Aug 12 23:51:01 CEST 2005
Update of /cvsroot/scummvm/residual
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4457
Modified Files:
engine.cpp
Log Message:
Applied my own patch #1258241 to decrease CPU load during SMUSH cutscenes.
Index: engine.cpp
===================================================================
RCS file: /cvsroot/scummvm/residual/engine.cpp,v
retrieving revision 1.83
retrieving revision 1.84
diff -u -d -r1.83 -r1.84
--- engine.cpp 10 Aug 2005 08:33:45 -0000 1.83
+++ engine.cpp 13 Aug 2005 06:49:40 -0000 1.84
@@ -135,6 +135,7 @@
unsigned int frameCounter = 0;
unsigned int timeAccum = 0;
unsigned int frameTimeCollection = 0;
+ int prevSmushFrame = 0;
char fps[8] = "";
_savegameLoadRequest = false;
_savegameSaveRequest = false;
@@ -230,6 +231,8 @@
// Run asynchronous tasks
lua_runtasks();
+ bool doFlip = true;
+
if (_mode == ENGINE_MODE_SMUSH) {
if (g_smush->isPlaying()) {
_movieTime = g_smush->getMovieTime();
@@ -237,13 +240,19 @@
g_driver->prepareSmushFrame(g_smush->getWidth(), g_smush->getHeight(), g_smush->getDstPtr());
g_smush->clearUpdateNeeded();
}
- if (g_smush->getFrame() > 0) {
- g_driver->drawSmushFrame(g_smush->getX(), g_smush->getY());
- if (SHOWFPS_GLOBAL)
- g_driver->drawEmergString(550, 25, fps, Color(255, 255, 255));
+ int frame = g_smush->getFrame();
+ if (frame > 0) {
+ if (frame != prevSmushFrame) {
+ prevSmushFrame = g_smush->getFrame();
+ g_driver->drawSmushFrame(g_smush->getX(), g_smush->getY());
+ if (SHOWFPS_GLOBAL)
+ g_driver->drawEmergString(550, 25, fps, Color(255, 255, 255));
+ } else
+ doFlip = false;
}
}
} else if (_mode == ENGINE_MODE_NORMAL) {
+ prevSmushFrame = 0;
g_driver->clearScreen();
// Update actor costumes & sets
@@ -326,17 +335,20 @@
// Draw Primitives
for (PrimitiveListType::iterator i = _primitiveObjects.begin(); i != _primitiveObjects.end(); i++) {
(*i)->draw();
+ doFlip = true;
}
// Draw text
for (TextListType::iterator i = _textObjects.begin(); i != _textObjects.end(); i++) {
(*i)->draw();
+ doFlip = true;
}
g_imuse->flushTracks();
g_imuse->refreshScripts();
- g_driver->flipBuffer();
+ if (doFlip)
+ g_driver->flipBuffer();
// don't kill CPU
SDL_Delay(1);
@@ -360,7 +372,7 @@
setMovieTime(_movieTime);
lua_endblock();
- if (SHOWFPS_GLOBAL) {
+ if (SHOWFPS_GLOBAL && doFlip) {
frameCounter++;
timeAccum += _frameTime;
if (timeAccum > 1000) {
More information about the Scummvm-git-logs
mailing list