From 2e68de1e5ab333966adeafdc998433fe346c9815 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Tue, 23 Feb 2010 22:47:53 +0000 Subject: SCI: Turn kernel_sleep() into SciEvent::sleep() svn-id: r48119 --- engines/sci/engine/kernel.cpp | 20 -------------------- engines/sci/engine/kmisc.cpp | 2 +- engines/sci/engine/state.cpp | 4 ++-- engines/sci/event.cpp | 21 +++++++++++++++++++++ engines/sci/event.h | 4 ++-- engines/sci/graphics/menu.cpp | 4 ++-- 6 files changed, 28 insertions(+), 27 deletions(-) (limited to 'engines/sci') diff --git a/engines/sci/engine/kernel.cpp b/engines/sci/engine/kernel.cpp index eaeb048353..bc84921367 100644 --- a/engines/sci/engine/kernel.cpp +++ b/engines/sci/engine/kernel.cpp @@ -721,26 +721,6 @@ bool kernel_matches_signature(SegManager *segMan, const char *sig, int argc, con return false; } -void kernel_sleep(SciEvent *event, uint32 msecs) { - uint32 time; - const uint32 wakeup_time = g_system->getMillis() + msecs; - - while (true) { - // let backend process events and update the screen - event->get(SCI_EVENT_PEEK); - // TODO: we need to call Cursor::refreshPosition() before each screen update to limit the mouse cursor position - time = g_system->getMillis(); - if (time + 10 < wakeup_time) { - g_system->delayMillis(10); - } else { - if (time < wakeup_time) - g_system->delayMillis(wakeup_time - time); - break; - } - - } -} - void Kernel::setDefaultKernelNames(Common::String gameId) { _kernelNames = Common::StringList(sci_default_knames, SCI_KNAMES_DEFAULT_ENTRIES_NR); diff --git a/engines/sci/engine/kmisc.cpp b/engines/sci/engine/kmisc.cpp index 01aa1fe6f8..288f8b6387 100644 --- a/engines/sci/engine/kmisc.cpp +++ b/engines/sci/engine/kmisc.cpp @@ -77,7 +77,7 @@ reg_t kGameIsRestarting(EngineState *s, int argc, reg_t *argv) { uint32 neededSleep = 30; if (duration < neededSleep) { - kernel_sleep(s->_event, neededSleep - duration); + s->_event->sleep(neededSleep - duration); s->_throttleLastTime = g_system->getMillis(); } else { s->_throttleLastTime = curTime; diff --git a/engines/sci/engine/state.cpp b/engines/sci/engine/state.cpp index 94ff57b330..2babdf4383 100644 --- a/engines/sci/engine/state.cpp +++ b/engines/sci/engine/state.cpp @@ -27,7 +27,7 @@ #include "sci/sci.h" // for INCLUDE_OLDGFX #include "sci/debug.h" // for g_debug_sleeptime_factor -#include "sci/event.h" // for kernel_sleep +#include "sci/event.h" #include "sci/engine/state.h" #include "sci/engine/selector.h" @@ -93,7 +93,7 @@ void EngineState::wait(int16 ticks) { last_wait_time = time; ticks *= g_debug_sleeptime_factor; - kernel_sleep(_event, ticks * 1000 / 60); + _event->sleep(ticks * 1000 / 60); } uint16 EngineState::currentRoomNumber() const { diff --git a/engines/sci/event.cpp b/engines/sci/event.cpp index dfc9c3c4f1..31d5ec3ed5 100644 --- a/engines/sci/event.cpp +++ b/engines/sci/event.cpp @@ -351,4 +351,25 @@ sciEvent SciEvent::get(unsigned int mask) { return event; } +void SciEvent::sleep(uint32 msecs) { + uint32 time; + const uint32 wakeup_time = g_system->getMillis() + msecs; + + while (true) { + // let backend process events and update the screen + get(SCI_EVENT_PEEK); + // TODO: we need to call Cursor::refreshPosition() before each screen update to limit the mouse cursor position + time = g_system->getMillis(); + if (time + 10 < wakeup_time) { + g_system->delayMillis(10); + } else { + if (time < wakeup_time) + g_system->delayMillis(wakeup_time - time); + break; + } + + } +} + + } // End of namespace Sci diff --git a/engines/sci/event.h b/engines/sci/event.h index a4f8fbaf27..1f9d46b2f6 100644 --- a/engines/sci/event.h +++ b/engines/sci/event.h @@ -118,6 +118,8 @@ public: sciEvent get(unsigned int mask); + void sleep(uint32 msecs); + private: int altify (int ch); int shiftify (int c); @@ -127,8 +129,6 @@ private: Common::List _events; }; -void kernel_sleep(SciEvent *event, uint32 msecs); // is in kernel.cpp - } // End of namespace Sci #endif diff --git a/engines/sci/graphics/menu.cpp b/engines/sci/graphics/menu.cpp index 581c9f6a44..0acd64ac1f 100644 --- a/engines/sci/graphics/menu.cpp +++ b/engines/sci/graphics/menu.cpp @@ -760,7 +760,7 @@ GuiMenuItemEntry *GfxMenu::interactiveWithKeyboard() { } break; case SCI_EVENT_NONE: - kernel_sleep(_event, 2500 / 1000); + _event->sleep(2500 / 1000); break; } } @@ -799,7 +799,7 @@ GuiMenuItemEntry *GfxMenu::interactiveWithMouse() { return curItemEntry; case SCI_EVENT_NONE: - kernel_sleep(_event, 2500 / 1000); + _event->sleep(2500 / 1000); break; } -- cgit v1.2.3