From 930f626daba5de8ec0b42fd32ba7ddf107e7d95a Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Wed, 10 Aug 2011 18:42:19 +0200 Subject: TIMER: Add a comment to explain why we remove the name in removeTimerProc. --- backends/timer/default/default-timer.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'backends/timer/default') diff --git a/backends/timer/default/default-timer.cpp b/backends/timer/default/default-timer.cpp index 5b133660e0..e1aadb62b8 100644 --- a/backends/timer/default/default-timer.cpp +++ b/backends/timer/default/default-timer.cpp @@ -162,6 +162,18 @@ void DefaultTimerManager::removeTimerProc(TimerProc callback) { } } + // We need to remove all names referencing the timer proc here. + // + // Else we run into troubles, when the client code removes and readds timer + // callbacks. + // + // Another issues occurs when one plays a game with ALSA as music driver, + // does RTL and starts a different engine game with ALSA as music driver. + // In this case the MPU401 code will add different timer procs with the + // same name, resulting in two different callbacks added with the same + // name and causing installTimerProc to error out. + // A good test case is running a SCUMM with ALSA output and then a KYRA + // game for example. for (TimerSlotMap::iterator i = _callbacks.begin(), end = _callbacks.end(); i != end; ++i) { if (i->_value == callback) _callbacks.erase(i); -- cgit v1.2.3