aboutsummaryrefslogtreecommitdiff
path: root/backends/events/default
diff options
context:
space:
mode:
authorMax Horn2009-01-02 01:21:38 +0000
committerMax Horn2009-01-02 01:21:38 +0000
commit063cff91d58b64baf00010405d0cc0385c610fe3 (patch)
tree1a46fb7ac0367988d8b8fcc9de3e2f2fe5c42cad /backends/events/default
parent655a1cb2278a8b6f89d22049a68d58d287b36efa (diff)
downloadscummvm-rg350-063cff91d58b64baf00010405d0cc0385c610fe3.tar.gz
scummvm-rg350-063cff91d58b64baf00010405d0cc0385c610fe3.tar.bz2
scummvm-rg350-063cff91d58b64baf00010405d0cc0385c610fe3.zip
Prevent the 'Confirm exit' dialog from being invoked recursively
svn-id: r35660
Diffstat (limited to 'backends/events/default')
-rw-r--r--backends/events/default/default-events.cpp9
-rw-r--r--backends/events/default/default-events.h1
2 files changed, 9 insertions, 1 deletions
diff --git a/backends/events/default/default-events.cpp b/backends/events/default/default-events.cpp
index 7c8c19c84e..d1e836ac59 100644
--- a/backends/events/default/default-events.cpp
+++ b/backends/events/default/default-events.cpp
@@ -94,7 +94,8 @@ DefaultEventManager::DefaultEventManager(OSystem *boss) :
_buttonState(0),
_modifierState(0),
_shouldQuit(false),
- _shouldRTL(false) {
+ _shouldRTL(false),
+ _confirmExitDialogActive(false) {
assert(_boss);
@@ -482,12 +483,18 @@ bool DefaultEventManager::pollEvent(Common::Event &event) {
case Common::EVENT_QUIT:
if (ConfMan.getBool("confirm_exit")) {
+ if (_confirmExitDialogActive) {
+ result = false;
+ break;
+ }
+ _confirmExitDialogActive = true;
if (g_engine)
g_engine->pauseEngine(true);
GUI::MessageDialog alert("Do you really want to quit?", "Quit", "Cancel");
result = _shouldQuit = (alert.runModal() == GUI::kMessageOK);
if (g_engine)
g_engine->pauseEngine(false);
+ _confirmExitDialogActive = false;
} else
_shouldQuit = true;
diff --git a/backends/events/default/default-events.h b/backends/events/default/default-events.h
index e481accc3e..89846da1ae 100644
--- a/backends/events/default/default-events.h
+++ b/backends/events/default/default-events.h
@@ -52,6 +52,7 @@ class DefaultEventManager : public Common::EventManager {
int _modifierState;
bool _shouldQuit;
bool _shouldRTL;
+ bool _confirmExitDialogActive;
class RandomSourceRecord {
public: