aboutsummaryrefslogtreecommitdiff
path: root/engines/sky/mouse.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sky/mouse.cpp')
-rw-r--r--engines/sky/mouse.cpp27
1 files changed, 22 insertions, 5 deletions
diff --git a/engines/sky/mouse.cpp b/engines/sky/mouse.cpp
index d3a212a764..689fc98e0c 100644
--- a/engines/sky/mouse.cpp
+++ b/engines/sky/mouse.cpp
@@ -167,17 +167,34 @@ void Mouse::drawNewMouse() {
//drawMouse();
}
-void Mouse::waitMouseNotPressed(void) {
+void Mouse::waitMouseNotPressed(int minDelay) {
bool mousePressed = true;
+ uint32 now = _system->getMillis();
OSystem::Event event;
- while (mousePressed) {
- _system->delayMillis(20);
+ while (mousePressed || _system->getMillis() < now + minDelay) {
while (_system->pollEvent(event)) {
- if ((event.type == OSystem::EVENT_LBUTTONUP) ||
- (event.type == OSystem::EVENT_QUIT))
+ switch (event.type) {
+ case OSystem::EVENT_LBUTTONUP:
+ mousePressed = false;
+ break;
+ case OSystem::EVENT_KEYDOWN:
+ if (event.kbd.ascii == 27) {
+ minDelay = 0;
+ mousePressed = false;
+ }
+ break;
+ case OSystem::EVENT_QUIT:
+ SkyEngine::_systemVars.quitGame = true;
+ minDelay = 0;
mousePressed = false;
+ break;
+ default:
+ break;
+ }
}
+ _system->updateScreen();
+ _system->delayMillis(20);
}
}