aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph-Eugene Winzer2018-03-18 18:54:58 +0100
committerEugene Sandulenko2018-03-28 17:36:57 +0200
commitcf29d9ceeca629322aebcfcc924099f1b8054403 (patch)
treeb380066609bfcc6ef5eb1f1c69855eafb6a4d757
parente059e81babcb6d0e4eb33382998f59e16e096deb (diff)
downloadscummvm-rg350-cf29d9ceeca629322aebcfcc924099f1b8054403.tar.gz
scummvm-rg350-cf29d9ceeca629322aebcfcc924099f1b8054403.tar.bz2
scummvm-rg350-cf29d9ceeca629322aebcfcc924099f1b8054403.zip
LILLIPUT: Removes redundant mouse cursor redraws
update() and pollEvent() are called multiple times over the course of one game loop, thus restoreSurfaceUnderMousePointer() and displayMousePointer() are called multiple times as well. This caused massive lag and froze the script system when the mouse was moved. While this commit doesn't fix the cursor flickering, it is now responsive at all times.
-rw-r--r--engines/lilliput/lilliput.cpp30
-rw-r--r--engines/lilliput/script.cpp2
2 files changed, 1 insertions, 31 deletions
diff --git a/engines/lilliput/lilliput.cpp b/engines/lilliput/lilliput.cpp
index b191f2a704..dde53f08d0 100644
--- a/engines/lilliput/lilliput.cpp
+++ b/engines/lilliput/lilliput.cpp
@@ -247,6 +247,7 @@ void LilliputEngine::update() {
_lastTime += ((currentTime - _lastTime) / 20) * 20;
newInt8();
pollEvent();
+ displayMousePointer();
}
}
@@ -432,8 +433,6 @@ void LilliputEngine::saveSurfaceGameArea() {
_savedSurfaceGameArea3[(i * 256) + j] = ((byte *)_mainSurface->getPixels())[index + j];
index += 320;
}
-
- displayMousePointer();
}
void LilliputEngine::saveSurfaceSpeech() {
@@ -447,8 +446,6 @@ void LilliputEngine::saveSurfaceSpeech() {
_savedSurfaceSpeech[(i * 252) + j] = ((byte *)_mainSurface->getPixels())[index + j];
index += 320;
}
-
- displayMousePointer();
}
void LilliputEngine::restoreSurfaceSpeech() {
@@ -462,8 +459,6 @@ void LilliputEngine::restoreSurfaceSpeech() {
((byte *)_mainSurface->getPixels())[index + j] = _savedSurfaceSpeech[(i * 252) + j];
index += 320;
}
-
- displayMousePointer();
}
@@ -480,8 +475,6 @@ void LilliputEngine::displayInterfaceHotspots() {
tmpVal = _scriptHandler->_interfaceHotspotStatus[index] * 20;
display16x16IndexedBuf(_bufferIdeogram, tmpVal + index, Common::Point(_interfaceHotspotsX[index], _interfaceHotspotsY[index]));
}
-
- displayMousePointer();
}
void LilliputEngine::displayLandscape() {
@@ -521,8 +514,6 @@ void LilliputEngine::displaySpeechBubble() {
}
index += 320;
}
-
- displayMousePointer();
}
void LilliputEngine::displaySpeechLine(int vgaIndex, byte *srcBuf, int &bufIndex) {
@@ -585,8 +576,6 @@ void LilliputEngine::displaySpeech(byte *buf) {
vgaIndex += (8 * 320);
displaySpeechLine(vgaIndex, buf, bufIndex);
}
-
- displayMousePointer();
}
void LilliputEngine::initGameAreaDisplay() {
@@ -608,8 +597,6 @@ void LilliputEngine::initGameAreaDisplay() {
prepareGameArea();
displayGameArea();
- // display mouse pointer on top of the rest
- displayMousePointer();
free(tmpBuf);
}
@@ -650,8 +637,6 @@ void LilliputEngine::displayGameArea() {
_system->copyRectToScreen((byte *)_mainSurface->getPixels(), 320, 0, 0, 320, 200);
_system->updateScreen();
-
- displayMousePointer();
}
void LilliputEngine::restoreMapPoints() {
@@ -663,8 +648,6 @@ void LilliputEngine::restoreMapPoints() {
for (byte index = 0; index < _numCharacters; index++) {
buf[_mapSavedPixelIndex[index]] = _mapSavedPixel[index];
}
-
- displayMousePointer();
}
void LilliputEngine::displayCharactersOnMap() {
@@ -684,7 +667,6 @@ void LilliputEngine::displayCharactersOnMap() {
buf[pixIndex] = _scriptHandler->_characterMapPixelColor[index];
}
}
- displayMousePointer();
}
void LilliputEngine::moveCharacters() {
@@ -867,8 +849,6 @@ void LilliputEngine::displaySmallAnims() {
subIndex = 0;
_smallAnimsFrameIndex = subIndex;
-
- displayMousePointer();
}
void LilliputEngine::paletteFadeOut() {
@@ -1155,8 +1135,6 @@ void LilliputEngine::displayCharacterStatBar(int8 type, int16 averagePosX, int8
}
vgaIndex += 320;
}
-
- displayMousePointer();
}
void LilliputEngine::displayString(byte *buf, Common::Point pos) {
@@ -2410,8 +2388,6 @@ void LilliputEngine::displayHeroismIndicator() {
index -= 320;
}
}
-
- displayMousePointer();
}
void LilliputEngine::pollEvent() {
@@ -2443,7 +2419,6 @@ void LilliputEngine::pollEvent() {
if (_skipDisplayFlag1 != 0) {
restoreSurfaceUnderMousePointer();
_mouseDisplayPos = newMousePos;
- displayMousePointer();
} else {
_mouseDisplayPos = newMousePos;
}
@@ -2752,9 +2727,6 @@ void LilliputEngine::displayVGAFile(Common::String fileName) {
memcpy(_mainSurface->getPixels(), buffer, 320*200);
_system->copyRectToScreen((byte *)_mainSurface->getPixels(), 320, 0, 0, 320, 200);
_system->updateScreen();
-
- displayMousePointer();
-
}
void LilliputEngine::fixPaletteEntries(uint8 *palette, int num) {
diff --git a/engines/lilliput/script.cpp b/engines/lilliput/script.cpp
index 853f763e7e..812998de4b 100644
--- a/engines/lilliput/script.cpp
+++ b/engines/lilliput/script.cpp
@@ -3158,9 +3158,7 @@ void LilliputScript::OC_displayNumericCharacterVariable() {
int posY = _currScript->readSint16LE();
if (!_vm->_displayMap) {
- _vm->restoreSurfaceUnderMousePointer();
displayNumber(displayVal, Common::Point(posX, posY));
- _vm->displayMousePointer();
}
}