[Scummvm-cvs-logs] CVS: scummvm/backends/midi morphos.cpp,1.4,1.5
Ruediger Hanke
tomjoad at users.sourceforge.net
Tue Jul 22 15:31:08 CEST 2003
Update of /cvsroot/scummvm/scummvm/backends/midi
In directory sc8-pr-cvs1:/tmp/cvs-serv27769
Modified Files:
morphos.cpp
Log Message:
Some MorphOS port fixes
Index: morphos.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/backends/midi/morphos.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- morphos.cpp 11 Jun 2003 05:54:46 -0000 1.4
+++ morphos.cpp 22 Jul 2003 22:30:16 -0000 1.5
@@ -100,6 +100,11 @@
MsgPort *music_timer_port = NULL;
timerequest *music_timer_request = NULL;
+ // Grab the MidiDriver's mutex. When the MidiDriver
+ // shuts down, it will wait on that mutex until we've
+ // detected the shutdown and quit looping.
+ g_system->lock_mutex(mid->_mutex);
+
ObtainSemaphore(&ScummMusicThreadRunning);
if (!OSystem_MorphOS::OpenATimer(&music_timer_port, (IORequest **) &music_timer_request, UNIT_MICROHZ, false)) {
@@ -109,26 +114,29 @@
else {
old_time = g_system->get_msecs();
- for (;;) {
+ while (mid->_started_thread) {
music_timer_request->tr_node.io_Command = TR_ADDREQUEST;
music_timer_request->tr_time.tv_secs = 0;
music_timer_request->tr_time.tv_micro = 10000;
DoIO((struct IORequest *)music_timer_request);
- if (CheckSignal(SIGBREAKF_CTRL_C))
+ if (!mid->_started_thread || CheckSignal(SIGBREAKF_CTRL_C))
break;
cur_time = g_system->get_msecs();
while (old_time < cur_time) {
old_time += 10;
if (mid->_timer_proc)
- (*(mid->_timer_proc)) (mid->_timer_param);
+ (*(mid->_timer_proc))(mid->_timer_param);
}
}
+ CloseDevice((IORequest *) music_timer_request);
+ DeleteIORequest((IORequest *) music_timer_request);
+ DeleteMsgPort(music_timer_port);
}
ReleaseSemaphore(&ScummMusicThreadRunning);
- RemTask(NULL);
+ g_system->unlock_mutex(mid->_mutex);
return 0;
}
More information about the Scummvm-git-logs
mailing list