[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