[Scummvm-cvs-logs] CVS: scummvm/scumm/smush smush_mixer.cpp,1.9,1.10 smush_player.cpp,1.38,1.39

Max Horn fingolfin at users.sourceforge.net
Sat Jun 21 16:30:02 CEST 2003


Update of /cvsroot/scummvm/scummvm/scumm/smush
In directory sc8-pr-cvs1:/tmp/cvs-serv15126/smush

Modified Files:
	smush_mixer.cpp smush_player.cpp 
Log Message:
lots of mixer cleanup / refactoring / reengineering

Index: smush_mixer.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/smush/smush_mixer.cpp,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- smush_mixer.cpp	21 Jun 2003 21:17:08 -0000	1.9
+++ smush_mixer.cpp	21 Jun 2003 23:29:34 -0000	1.10
@@ -30,9 +30,9 @@
 
 SmushMixer::SmushMixer(SoundMixer *m) :
 	_mixer(m),
-	_nextIndex(_mixer->_beginSlots),
+	_nextIndex(0),
 	_soundFrequency(22050) {
-	for (int32 i = _mixer->_beginSlots; i < SoundMixer::NUM_CHANNELS; i++) {
+	for (int32 i = 0; i < SoundMixer::NUM_CHANNELS; i++) {
 		_channels[i].id = -1;
 		_channels[i].chan = NULL;
 		_channels[i].mixer_index = -1;
@@ -40,11 +40,15 @@
 }
 
 SmushMixer::~SmushMixer() {
+	for (int32 i = 0; i < SoundMixer::NUM_CHANNELS; i++) {
+		if (_channels[i].mixer_index != -1)
+			_mixer->stop(_channels[i].mixer_index);
+	}
 }
 
 SmushChannel *SmushMixer::findChannel(int32 track) {
 	debug(9, "SmushMixer::findChannel(%d)", track);
-	for (int32 i = _mixer->_beginSlots; i < SoundMixer::NUM_CHANNELS; i++) {
+	for (int32 i = 0; i < SoundMixer::NUM_CHANNELS; i++) {
 		if (_channels[i].id == track)
 			return _channels[i].chan;
 	}
@@ -57,12 +61,12 @@
 
 	debug(9, "SmushMixer::addChannel(%d)", track);
 
-	for (i = _mixer->_beginSlots; i < SoundMixer::NUM_CHANNELS; i++) {
+	for (i = 0; i < SoundMixer::NUM_CHANNELS; i++) {
 		if (_channels[i].id == track)
 			warning("SmushMixer::addChannel(%d) : channel already exists", track);
 	}
 	if (_nextIndex >= SoundMixer::NUM_CHANNELS)
-		_nextIndex = _mixer->_beginSlots;
+		_nextIndex = 0;
 
 	for (i = _nextIndex; i < SoundMixer::NUM_CHANNELS; i++) {
 		if (_channels[i].chan == NULL || _channels[i].id == -1) {
@@ -74,7 +78,7 @@
 		}
 	}
 
-	for (i = _mixer->_beginSlots; i < _nextIndex; i++) {
+	for (i = 0; i < _nextIndex; i++) {
 		if (_channels[i].chan == NULL || _channels[i].id == -1)	{
 			_channels[i].chan = c;
 			_channels[i].id = track;
@@ -86,7 +90,7 @@
 
 	warning("_nextIndex == %d", _nextIndex);
 
-	for (i = _mixer->_beginSlots; i < SoundMixer::NUM_CHANNELS; i++) {
+	for (i = 0; i < SoundMixer::NUM_CHANNELS; i++) {
 		warning("channel %d : %p(%d, %d) %d %d", i, (void *)_channels[i].chan, 
 			_channels[i].chan ? _channels[i].chan->getTrackIdentifier() : -1, 
 			_channels[i].chan ? _channels[i].chan->isTerminated() : 1, 
@@ -99,9 +103,13 @@
 
 bool SmushMixer::handleFrame() {
 	debug(9, "SmushMixer::handleFrame()");
-	for (int i = _mixer->_beginSlots; i < SoundMixer::NUM_CHANNELS; i++) {
+	for (int i = 0; i < SoundMixer::NUM_CHANNELS; i++) {
 		if (_channels[i].id != -1) {
 			if (_channels[i].chan->isTerminated()) {
+				if (_channels[i].mixer_index != -1) {
+					_mixer->stop(_channels[i].mixer_index);
+					_channels[i].mixer_index = -1;
+				}
 				delete _channels[i].chan;
 				_channels[i].id = -1;
 				_channels[i].chan = NULL;
@@ -131,7 +139,7 @@
 
 				if (_silentMixer == false) {
 					if (_channels[i].mixer_index == -1) {
-						_channels[i].mixer_index = _mixer->playStream(-1, data, size, rate, flags);
+						_channels[i].mixer_index = _mixer->playStream(data, size, rate, flags, 2000000);
 					} else {
 						_mixer->append(_channels[i].mixer_index, data, size);
 					}
@@ -145,7 +153,7 @@
 
 bool SmushMixer::stop() {
 	debug(9, "SmushMixer::stop()");
-	for (int i = _mixer->_beginSlots; i < SoundMixer::NUM_CHANNELS; i++) {
+	for (int i = 0; i < SoundMixer::NUM_CHANNELS; i++) {
 		if (_channels[i].id != -1) {
 			delete _channels[i].chan;
 			_channels[i].id = -1;
@@ -154,4 +162,3 @@
 	}
 	return true;
 }
-

Index: smush_player.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/smush/smush_player.cpp,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -d -r1.38 -r1.39
--- smush_player.cpp	21 Jun 2003 21:17:08 -0000	1.38
+++ smush_player.cpp	21 Jun 2003 23:29:34 -0000	1.39
@@ -451,8 +451,8 @@
 					} while (--count);
 
 					if (_IACTchannel == -1) {
-						_IACTchannel = _scumm->_mixer->playStream(-1, output_data, 0x1000, 22050,
-															SoundMixer::FLAG_STEREO | SoundMixer::FLAG_16BITS, -1, 200000);
+						_IACTchannel = _scumm->_mixer->playStream(output_data, 0x1000, 22050,
+															SoundMixer::FLAG_STEREO | SoundMixer::FLAG_16BITS, 200000);
 					} else {
 						_scumm->_mixer->append(_IACTchannel, output_data, 0x1000);
 					}





More information about the Scummvm-git-logs mailing list