[Scummvm-cvs-logs] SF.net SVN: scummvm:[43537] scummvm/trunk/engines/kyra
lordhoto at users.sourceforge.net
lordhoto at users.sourceforge.net
Wed Aug 19 18:19:55 CEST 2009
Revision: 43537
http://scummvm.svn.sourceforge.net/scummvm/?rev=43537&view=rev
Author: lordhoto
Date: 2009-08-19 16:19:55 +0000 (Wed, 19 Aug 2009)
Log Message:
-----------
Make KYRA only call OSystem::updateScreen from inside Screen::updateScreen, when the screen really changed OR the palette changed.
Modified Paths:
--------------
scummvm/trunk/engines/kyra/animator_lok.cpp
scummvm/trunk/engines/kyra/animator_lok.h
scummvm/trunk/engines/kyra/gui_lok.cpp
scummvm/trunk/engines/kyra/kyra_v1.cpp
scummvm/trunk/engines/kyra/screen.cpp
scummvm/trunk/engines/kyra/screen.h
scummvm/trunk/engines/kyra/script_lok.cpp
scummvm/trunk/engines/kyra/sequences_lok.cpp
scummvm/trunk/engines/kyra/text_lok.cpp
Modified: scummvm/trunk/engines/kyra/animator_lok.cpp
===================================================================
--- scummvm/trunk/engines/kyra/animator_lok.cpp 2009-08-19 09:01:04 UTC (rev 43536)
+++ scummvm/trunk/engines/kyra/animator_lok.cpp 2009-08-19 16:19:55 UTC (rev 43537)
@@ -37,7 +37,6 @@
_vm = vm;
_screen = vm->screen();
_initOk = false;
- _updateScreen = false;
_system = system;
_screenObjects = _actors = _items = _sprites = _objectQueue = 0;
_noDrawShapesFlag = 0;
@@ -382,15 +381,11 @@
_screen->copyRegion(xpos << 3, ypos, xpos << 3, ypos, width << 3, height, 2, 0);
curObject->refreshFlag = 0;
- _updateScreen = true;
}
}
}
- if (_updateScreen) {
- _screen->updateScreen();
- _updateScreen = false;
- }
+ _screen->updateScreen();
}
void Animator_LoK::updateAllObjectShapes() {
Modified: scummvm/trunk/engines/kyra/animator_lok.h
===================================================================
--- scummvm/trunk/engines/kyra/animator_lok.h 2009-08-19 09:01:04 UTC (rev 43536)
+++ scummvm/trunk/engines/kyra/animator_lok.h 2009-08-19 16:19:55 UTC (rev 43537)
@@ -95,7 +95,6 @@
int16 fetchAnimHeight(const uint8 *shape, int16 mult);
int _noDrawShapesFlag;
- bool _updateScreen;
uint16 _brandonDrawFrame;
int _brandonScaleX;
int _brandonScaleY;
Modified: scummvm/trunk/engines/kyra/gui_lok.cpp
===================================================================
--- scummvm/trunk/engines/kyra/gui_lok.cpp 2009-08-19 09:01:04 UTC (rev 43536)
+++ scummvm/trunk/engines/kyra/gui_lok.cpp 2009-08-19 16:19:55 UTC (rev 43537)
@@ -522,7 +522,6 @@
if (_menuRestoreScreen) {
restorePalette();
_screen->loadPageFromDisk("SEENPAGE.TMP", 0);
- _vm->_animator->_updateScreen = true;
} else {
_screen->deletePageFromDisk(0);
}
Modified: scummvm/trunk/engines/kyra/kyra_v1.cpp
===================================================================
--- scummvm/trunk/engines/kyra/kyra_v1.cpp 2009-08-19 09:01:04 UTC (rev 43536)
+++ scummvm/trunk/engines/kyra/kyra_v1.cpp 2009-08-19 16:19:55 UTC (rev 43537)
@@ -434,11 +434,8 @@
}
}
- // TODO: Check whether we should really call Screen::updateScreen here.
- // We might simply want to call OSystem::updateScreen instead, since Screen::updateScreen
- // copies changed screen parts to the screen buffer, which might not be desired.
if (updateScreen)
- screen()->updateScreen();
+ _system->updateScreen();
}
void KyraEngine_v1::removeInputTop() {
Modified: scummvm/trunk/engines/kyra/screen.cpp
===================================================================
--- scummvm/trunk/engines/kyra/screen.cpp 2009-08-19 09:01:04 UTC (rev 43536)
+++ scummvm/trunk/engines/kyra/screen.cpp 2009-08-19 16:19:55 UTC (rev 43537)
@@ -51,6 +51,7 @@
memset(_fonts, 0, sizeof(_fonts));
_currentFont = FID_8_FNT;
+ _paletteChanged = true;
}
Screen::~Screen() {
@@ -206,6 +207,9 @@
}
void Screen::updateScreen() {
+ bool needRealUpdate = _forceFullUpdate || _dirtyRects.size() || _paletteChanged;
+ _paletteChanged = false;
+
if (_useOverlays)
updateDirtyRectsOvl();
else if (_isAmiga && _interfacePaletteEnabled)
@@ -214,13 +218,16 @@
updateDirtyRects();
if (_debugEnabled) {
+ needRealUpdate = true;
+
if (!_useOverlays)
_system->copyRectToScreen(getPagePtr(2), SCREEN_W, 320, 0, SCREEN_W, SCREEN_H);
else
_system->copyRectToScreen(getPagePtr(2), SCREEN_W, 640, 0, SCREEN_W, SCREEN_H);
}
- _system->updateScreen();
+ if (needRealUpdate)
+ _system->updateScreen();
}
void Screen::updateDirtyRects() {
@@ -709,6 +716,7 @@
screenPal[4 * i + 3] = 0;
}
+ _paletteChanged = true;
_system->setPalette(screenPal, 0, pal.getNumColors());
}
@@ -744,6 +752,7 @@
screenPal[4 * i + 3] = 0;
}
+ _paletteChanged = true;
_system->setPalette(screenPal, 32, pal.getNumColors());
}
Modified: scummvm/trunk/engines/kyra/screen.h
===================================================================
--- scummvm/trunk/engines/kyra/screen.h 2009-08-19 09:01:04 UTC (rev 43536)
+++ scummvm/trunk/engines/kyra/screen.h 2009-08-19 16:19:55 UTC (rev 43537)
@@ -308,7 +308,6 @@
virtual bool init();
virtual void setResolution();
-
void updateScreen();
// debug functions
@@ -508,6 +507,7 @@
};
bool _forceFullUpdate;
+ bool _paletteChanged;
Common::List<Common::Rect> _dirtyRects;
void addDirtyRect(int x, int y, int w, int h);
Modified: scummvm/trunk/engines/kyra/script_lok.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script_lok.cpp 2009-08-19 09:01:04 UTC (rev 43536)
+++ scummvm/trunk/engines/kyra/script_lok.cpp 2009-08-19 16:19:55 UTC (rev 43537)
@@ -432,7 +432,6 @@
const uint32 continueTime = waitTime * _tickLength + _system->getMillis();
_movieObjects[wsaIndex]->displayFrame(wsaFrame++, 0, xpos, ypos, 0, 0, 0);
- _animator->_updateScreen = true;
if (wsaFrame >= _movieObjects[wsaIndex]->frames())
running = false;
@@ -454,7 +453,6 @@
_screen->hideMouse();
const uint32 continueTime = waitTime * _tickLength + _system->getMillis();
_movieObjects[wsaIndex]->displayFrame(frame, 0, xpos, ypos, 0, 0, 0);
- _animator->_updateScreen = true;
delayUntil(continueTime, false, true);
_screen->showMouse();
return 0;
@@ -487,7 +485,6 @@
for (; startFrame <= endFrame; ++startFrame) {
const uint32 nextRun = _system->getMillis() + delayTime * _tickLength;
_movieObjects[wsaIndex]->displayFrame(startFrame, 0, xpos, ypos, 0, 0, 0);
- _animator->_updateScreen = true;
delayUntil(nextRun, false, true);
}
_screen->showMouse();
@@ -576,7 +573,6 @@
int KyraEngine_LoK::o1_loadPageFromDisk(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_LoK::o1_loadPageFromDisk(%p) ('%s', %d)", (const void *)script, stackPosString(0), stackPos(1));
_screen->loadPageFromDisk(stackPosString(0), stackPos(1));
- _animator->_updateScreen = true;
return 0;
}
@@ -644,7 +640,6 @@
int srcPage = stackPos(4);
int dstPage = stackPos(5);
_screen->copyRegion(xpos, ypos, xpos, ypos, width, height, srcPage, dstPage);
- _animator->_updateScreen = true;
return 0;
}
@@ -674,7 +669,6 @@
_screen->hideMouse();
const uint32 continueTime = waitTime * _tickLength + _system->getMillis();
_movieObjects[wsaIndex]->displayFrame(frame, 2, xpos, ypos, 0, 0, 0);
- _animator->_updateScreen = true;
delayUntil(continueTime, false, true);
_screen->showMouse();
@@ -749,8 +743,6 @@
while (endFrame >= frame) {
const uint32 continueTime = waitTime * _tickLength + _system->getMillis();
_movieObjects[wsaIndex]->displayFrame(frame, 0, xpos, ypos, 0, 0, 0);
- if (waitTime)
- _animator->_updateScreen = true;
delayUntil(continueTime, false, true);
++frame;
}
@@ -759,8 +751,6 @@
while (endFrame <= frame) {
const uint32 continueTime = waitTime * _tickLength + _system->getMillis();
_movieObjects[wsaIndex]->displayFrame(frame, 0, xpos, ypos, 0, 0, 0);
- if (waitTime)
- _animator->_updateScreen = true;
delayUntil(continueTime, false, true);
--frame;
}
@@ -1278,8 +1268,6 @@
snd_playSoundEffect(0x73);
amulet->displayFrame(code, 0, 224, 152, 0, 0, 0);
- _animator->_updateScreen = true;
-
delayUntil(nextTime, false, true);
}
_screen->showMouse();
Modified: scummvm/trunk/engines/kyra/sequences_lok.cpp
===================================================================
--- scummvm/trunk/engines/kyra/sequences_lok.cpp 2009-08-19 09:01:04 UTC (rev 43536)
+++ scummvm/trunk/engines/kyra/sequences_lok.cpp 2009-08-19 16:19:55 UTC (rev 43537)
@@ -1944,7 +1944,6 @@
}
_screen->setScreenPalette(_screen->getPalette(0));
- _animator->_updateScreen = true;
switch (_kyragemFadingState.nextOperation) {
case 0:
Modified: scummvm/trunk/engines/kyra/text_lok.cpp
===================================================================
--- scummvm/trunk/engines/kyra/text_lok.cpp 2009-08-19 09:01:04 UTC (rev 43536)
+++ scummvm/trunk/engines/kyra/text_lok.cpp 2009-08-19 16:19:55 UTC (rev 43537)
@@ -97,7 +97,6 @@
currPage = _screen->_curPage;
_screen->_curPage = 2;
_text->printCharacterText(chatStr, charNum, _characterList[charNum].x1);
- _animator->_updateScreen = true;
_screen->_curPage = currPage;
}
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