[Scummvm-cvs-logs] CVS: scummvm/simon midi.cpp,1.29,1.30
Jamieson Christian
jamieson630 at users.sourceforge.net
Tue May 20 09:43:08 CEST 2003
Update of /cvsroot/scummvm/scummvm/simon
In directory sc8-pr-cvs1:/tmp/cvs-serv32535/scummvm/simon
Modified Files:
midi.cpp
Log Message:
Fixed file scan alignment problem
Index: midi.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/simon/midi.cpp,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -d -r1.29 -r1.30
--- midi.cpp 20 May 2003 14:53:45 -0000 1.29
+++ midi.cpp 20 May 2003 16:42:25 -0000 1.30
@@ -104,17 +104,15 @@
void MidiPlayer::onTimer (void *data) {
MidiPlayer *player = (MidiPlayer *) data;
- if (player->_paused)
+ if (player->_paused || !player->_parser)
return;
- if (player->_parser) {
- player->_system->lock_mutex (player->_mutex);
- player->_parser->onTimer();
- player->_system->unlock_mutex (player->_mutex);
- }
+ player->_system->lock_mutex (player->_mutex);
+ player->_parser->onTimer();
+ player->_system->unlock_mutex (player->_mutex);
}
void MidiPlayer::jump (uint16 track, uint16 tick) {
- if (track == _currentTrack)
+ if (track == _currentTrack || !_parser)
return;
if (_num_songs > 0) {
@@ -142,15 +140,15 @@
for (int i = ARRAYSIZE (_volumeTable); i; --i)
_volumeTable[i-1] = 127;
_parser = parser; // That plugs the power cord into the wall
-
- _system->unlock_mutex (_mutex);
} else if (_parser) {
_system->lock_mutex (_mutex);
_currentTrack = (byte) track;
_parser->setTrack ((byte) track);
- _parser->jumpToTick (tick - 1);
- _system->unlock_mutex (_mutex);
}
+
+ _parser->jumpToTick (tick ? tick - 1 : 0);
+ pause (false);
+ _system->unlock_mutex (_mutex);
}
void MidiPlayer::stop() {
@@ -162,7 +160,7 @@
}
void MidiPlayer::pause (bool b) {
- if (_paused == b)
+ if (_paused == b || !_driver)
return;
_paused = b;
@@ -251,9 +249,10 @@
parser = 0;
}
- _currentTrack = 0;
+ _currentTrack = 255;
for (int i = ARRAYSIZE (_volumeTable); i; --i)
_volumeTable[i-1] = 127;
+ _paused = true;
_parser = parser; // That plugs the power cord into the wall
_system->unlock_mutex (_mutex);
}
@@ -307,8 +306,10 @@
_song_sizes[i] = size;
}
+ _paused = true;
+ _currentTrack = 255;
_system->unlock_mutex (_mutex);
- jump (0, 1);
+// jump (0, 1);
}
void MidiPlayer::playXMIDI (File *in) {
@@ -320,7 +321,19 @@
uint32 size = 4;
in->read (buf, 4);
if (!memcmp (buf, "FORM", 4)) {
- while (memcmp (buf, "CAT ", 4)) { size += 4; in->read (buf, 4); }
+ int i;
+ for (i = 0; i < 16; ++i) {
+ if (!memcmp (buf, "CAT ", 4))
+ break;
+ size += 2;
+ memcpy (buf, &buf[2], 2);
+ in->read (&buf[2], 2);
+ }
+ if (memcmp (buf, "CAT ", 4)) {
+ printf ("ERROR! Could not find 'CAT ' tag to determine resource size!\n");
+ _system->unlock_mutex (_mutex);
+ return;
+ }
size += 4 + in->readUint32BE();
in->seek (pos, 0);
_data = (byte *) calloc (size, 1);
@@ -340,9 +353,10 @@
parser = 0;
}
- _currentTrack = 0;
+ _currentTrack = 255;
for (int i = ARRAYSIZE (_volumeTable); i; --i)
_volumeTable[i-1] = 127;
+ _paused = true;
_parser = parser; // That plugs the power cord into the wall
_system->unlock_mutex (_mutex);
}
More information about the Scummvm-git-logs
mailing list