aboutsummaryrefslogtreecommitdiff
path: root/engines/agi/saveload.cpp
diff options
context:
space:
mode:
authorEugene Sandulenko2009-05-19 21:09:43 +0000
committerEugene Sandulenko2009-05-19 21:09:43 +0000
commit40dd214789ec627624a7703798907b7afbf50b8e (patch)
tree1c65aababcb8bb0c811c649e1a037c8f788624cb /engines/agi/saveload.cpp
parenta1364e37f7182d3a88aea659e07fc9e9f196719b (diff)
downloadscummvm-rg350-40dd214789ec627624a7703798907b7afbf50b8e.tar.gz
scummvm-rg350-40dd214789ec627624a7703798907b7afbf50b8e.tar.bz2
scummvm-rg350-40dd214789ec627624a7703798907b7afbf50b8e.zip
Start of fixing bug #2537054: "AGI: Using GMM to load causes graphics glitches"
The engine still crashes when load from GMM occured with a text box on screen. svn-id: r40733
Diffstat (limited to 'engines/agi/saveload.cpp')
-rw-r--r--engines/agi/saveload.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/engines/agi/saveload.cpp b/engines/agi/saveload.cpp
index 1b694e711c..bd0a0a5112 100644
--- a/engines/agi/saveload.cpp
+++ b/engines/agi/saveload.cpp
@@ -613,6 +613,16 @@ int AgiEngine::selectSlot() {
_gfx->pollTimer(); /* msdos driver -> does nothing */
key = doPollKeyboard();
+
+ // It may happen that somebody will open GMM while
+ // this dialog is open, and load a game
+ // We are processing it here, effectively jumping
+ // out of the dead loop
+ if (getflag(fRestoreJustRan)) {
+ rc = -2;
+ goto getout;
+ }
+
switch (key) {
case KEY_ENTER:
rc = active;
@@ -724,6 +734,7 @@ press:
getout:
closeWindow();
+
return rc;
}
@@ -844,7 +855,9 @@ int AgiEngine::loadGameDialog() {
slot = selectSlot();
if (slot < 0) {
- messageBox("Game NOT restored.");
+ if (slot == -1) // slot = -2 when GMM was launched
+ messageBox("Game NOT restored.");
+
return errOK;
}