diff --git a/engines/tony/custom.cpp b/engines/tony/custom.cpp index 0392fc409d71..d6e7fdd2eeeb 100644 --- a/engines/tony/custom.cpp +++ b/engines/tony/custom.cpp @@ -2134,15 +2134,12 @@ DECLARE_CUSTOM_FUNCTION(StartDialog)(CORO_PARAM, uint32 nDialog, uint32 nStartGr */ DECLARE_CUSTOM_FUNCTION(TakeOwnership)(CORO_PARAM, uint32 num, uint32, uint32, uint32) { -// EnterCriticalSection(&cs[num]); -// WaitForSingleObject(mut[num],CORO_INFINITE); - warning("TODO: TakeOwnership"); + CoroScheduler.waitForSingleObject(coroParam, GLOBALS.mut[num], CORO_INFINITE); } DECLARE_CUSTOM_FUNCTION(ReleaseOwnership)(CORO_PARAM, uint32 num, uint32, uint32, uint32) { -// LeaveCriticalSection(&cs[num]); -// g_system->unlockMutex(mut[num]); - warning("TODO: ReleaseOwnership"); + CoroScheduler.pulseEvent(GLOBALS.mut[num]); + warning("TODO: Validate that the use of events in TakeOwnership/ReleaseOwnership match original"); } @@ -2646,11 +2643,9 @@ void SetupGlobalVars(RMTony *tony, RMPointer *ptr, RMGameBoxes *box, RMLocation GLOBALS.bAlwaysDisplay = false; int i; -/* for (i = 0;i < 10; i++) - cs[i] = g_system->createMutex(); for (i = 0;i < 10; i++) - mut[i] = CreateMutex(NULL, false, NULL); -*/ + GLOBALS.mut[i] = CoroScheduler.createEvent(false, false); + for (i = 0; i < 200; i++) GLOBALS.tappeti[i] = 0; diff --git a/engines/tony/globals.cpp b/engines/tony/globals.cpp index 867d48e0faa8..7c801a787d91 100644 --- a/engines/tony/globals.cpp +++ b/engines/tony/globals.cpp @@ -83,9 +83,8 @@ Globals::Globals() { curSonoriz = 0; bFadeOutStop = false; -// OSystem::MutexRef cs[10]; // OSystem::MutexRef vdb; - Common::fill(&mut[0], &mut[10], (HANDLE)NULL); + Common::fill(&mut[0], &mut[10], 0); bSkipIdle = false; hSkipIdle = 0; lastMusic = 0; diff --git a/engines/tony/globals.h b/engines/tony/globals.h index 72faa6a6c580..d82e0fcaf22f 100644 --- a/engines/tony/globals.h +++ b/engines/tony/globals.h @@ -241,7 +241,7 @@ class Globals { RMPoint StartLocPos[256]; OSystem::MutexRef cs[10]; OSystem::MutexRef vdb; - HANDLE mut[10]; + uint32 mut[10]; bool bSkipIdle; uint32 hSkipIdle;