aboutsummaryrefslogtreecommitdiff
path: root/engines/tony/tony.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/tony/tony.cpp')
-rw-r--r--engines/tony/tony.cpp21
1 files changed, 12 insertions, 9 deletions
diff --git a/engines/tony/tony.cpp b/engines/tony/tony.cpp
index d8ea05d06a..ece1904810 100644
--- a/engines/tony/tony.cpp
+++ b/engines/tony/tony.cpp
@@ -36,7 +36,7 @@ namespace Tony {
TonyEngine *_vm;
TonyEngine::TonyEngine(OSystem *syst, const TonyGameDescription *gameDesc) : Engine(syst),
- _gameDescription(gameDesc), _randomSource("tony"), _scheduler() {
+ _gameDescription(gameDesc), _randomSource("tony") {
_vm = this;
DebugMan.addDebugChannel(kTonyDebugAnimations, "animations", "Animations debugging");
@@ -48,6 +48,9 @@ TonyEngine::TonyEngine(OSystem *syst, const TonyGameDescription *gameDesc) : Eng
TonyEngine::~TonyEngine() {
// Close the voice database
CloseVoiceDatabase();
+
+ // Reset the coroutine scheduler
+ CoroScheduler.reset();
}
/**
@@ -68,14 +71,14 @@ Common::Error TonyEngine::run() {
* Initialise the game
*/
Common::ErrorCode TonyEngine::Init() {
- m_hEndOfFrame = g_scheduler->createEvent(false, false);
+ m_hEndOfFrame = CoroScheduler.createEvent(false, false);
m_bPaused = false;
m_bDrawLocation = true;
m_startTime = g_system->getMillis();
// Reset the scheduler
- _scheduler.reset();
+ CoroScheduler.reset();
// Initialise the graphics window
_window.Init();
@@ -413,7 +416,7 @@ void TonyEngine::PlayProcess(CORO_PARAM, const void *param) {
CORO_BEGIN_CODE(_ctx);
- // Infinite loop. We rely on the outer main process to detect if a shutdown is required,
+ // CORO_INFINITE loop. We rely on the outer main process to detect if a shutdown is required,
// and kill the scheudler and all the processes, including this one
for (;;) {
// Se siamo in pausa, entra nel loop appropriato
@@ -421,14 +424,14 @@ void TonyEngine::PlayProcess(CORO_PARAM, const void *param) {
_vm->PauseLoop();
// Wait for the next frame
- CORO_INVOKE_1(g_scheduler->sleep, 50);
+ CORO_INVOKE_1(CoroScheduler.sleep, 50);
// Call the engine to handle the next frame
// FIXME: This needs to be moved into it's own process
CORO_INVOKE_1(_vm->_theEngine.DoFrame, _vm->m_bDrawLocation);
// Warns that a frame is finished
- g_scheduler->pulseEvent(_vm->m_hEndOfFrame);
+ CoroScheduler.pulseEvent(_vm->m_hEndOfFrame);
// Handle drawing the frame
if (!_vm->m_bPaused) {
@@ -450,7 +453,7 @@ void TonyEngine::PlayProcess(CORO_PARAM, const void *param) {
*/
void TonyEngine::Play(void) {
// Create the game player process
- g_scheduler->createProcess(PlayProcess, NULL);
+ CoroScheduler.createProcess(PlayProcess, NULL);
// Loop through calling the scheduler until it's time for the game to quit
while (!shouldQuit() && !m_bQuitNow) {
@@ -458,7 +461,7 @@ void TonyEngine::Play(void) {
g_system->delayMillis(10);
// Call any scheduled processes
- _scheduler.schedule();
+ CoroScheduler.schedule();
}
}
@@ -466,7 +469,7 @@ void TonyEngine::Play(void) {
void TonyEngine::Close(void) {
CloseMusic();
- g_scheduler->closeEvent(m_hEndOfFrame);
+ CoroScheduler.closeEvent(m_hEndOfFrame);
_theBoxes.Close();
_theEngine.Close();
_window.Close();