From f13d294ae5e12a5906cf6088f5bc309d51192a9c Mon Sep 17 00:00:00 2001 From: Torbjörn Andersson Date: Sun, 26 Feb 2006 13:43:50 +0000 Subject: Cleaned up my earlier "delay in busy-wait loop" commit, and added a similar delay to PopupMenu::Show(). svn-id: r20914 --- engines/lure/events.cpp | 10 ++++++---- engines/lure/events.h | 6 ++---- engines/lure/lure.cpp | 4 ++-- engines/lure/menu.cpp | 1 + 4 files changed, 11 insertions(+), 10 deletions(-) (limited to 'engines') diff --git a/engines/lure/events.cpp b/engines/lure/events.cpp index 185884d755..51b22b8bf1 100644 --- a/engines/lure/events.cpp +++ b/engines/lure/events.cpp @@ -32,7 +32,7 @@ Mouse &Mouse::getReference() { return *int_mouse; } -Mouse::Mouse(OSystem &system) : _system(system) { +Mouse::Mouse() { int_mouse = this; _lButton = false; @@ -99,11 +99,12 @@ void Mouse::setPosition(int newX, int newY) { } void Mouse::waitForRelease() { + OSystem &system = System::getReference(); Events &e = Events::getReference(); do { e.pollEvent(); - _system.delayMillis(20); + system.delayMillis(20); } while (!e.quitFlag && (lButton() || rButton())); } @@ -111,7 +112,7 @@ void Mouse::waitForRelease() { static Events *int_events = NULL; -Events::Events(OSystem &system) : _system(system) { +Events::Events() { int_events = this; quitFlag = false; } @@ -148,6 +149,7 @@ bool Events::pollEvent() { } void Events::waitForPress() { + OSystem &system = System::getReference(); bool keyButton = false; while (!keyButton) { if (pollEvent()) { @@ -159,7 +161,7 @@ void Events::waitForPress() { Mouse::getReference().waitForRelease(); } } - _system.delayMillis(20); + system.delayMillis(20); } } diff --git a/engines/lure/events.h b/engines/lure/events.h index 547fa1826f..0287b6de19 100644 --- a/engines/lure/events.h +++ b/engines/lure/events.h @@ -32,12 +32,11 @@ namespace Lure { class Mouse { private: - OSystem &_system; uint8 _cursorNum; int16 _x, _y; bool _lButton, _rButton; public: - Mouse(OSystem &system); + Mouse(); ~Mouse(); static Mouse &getReference(); void handleEvent(OSystem::Event event); @@ -57,12 +56,11 @@ public: class Events { private: - OSystem &_system; OSystem::Event _event; public: bool quitFlag; - Events(OSystem &system); + Events(); static Events &getReference(); bool pollEvent(); diff --git a/engines/lure/lure.cpp b/engines/lure/lure.cpp index c72b1a6ae3..2fc47f7d62 100644 --- a/engines/lure/lure.cpp +++ b/engines/lure/lure.cpp @@ -251,8 +251,8 @@ int LureEngine::init(GameDetector &detector) { _resources = new Resources(); _strings = new StringData(); _screen = new Screen(*_system); - _mouse = new Mouse(*_system); - _events = new Events(*_system); + _mouse = new Mouse(); + _events = new Events(); _menu = new Menu(); Surface::initialise(); _room = new Room(); diff --git a/engines/lure/menu.cpp b/engines/lure/menu.cpp index 57cdd751dd..9fa98d5300 100644 --- a/engines/lure/menu.cpp +++ b/engines/lure/menu.cpp @@ -412,6 +412,7 @@ uint16 PopupMenu::Show(int numEntries, const char *actions[]) { break; } } + system.delayMillis(20); } mouse.setPosition(oldX, oldY); -- cgit v1.2.3