[Scummvm-cvs-logs] CVS: scummvm/sword1 music.cpp,1.30,1.31 music.h,1.12,1.13

Max Horn fingolfin at users.sourceforge.net
Sat Nov 27 09:20:38 CET 2004


Update of /cvsroot/scummvm/scummvm/sword1
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30903/sword1

Modified Files:
	music.cpp music.h 
Log Message:
Use modern form of setupPremix

Index: music.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sword1/music.cpp,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -d -r1.30 -r1.31
--- music.cpp	21 Oct 2004 12:43:48 -0000	1.30
+++ music.cpp	27 Nov 2004 16:18:25 -0000	1.31
@@ -233,7 +233,8 @@
 Music::Music(OSystem *system, SoundMixer *pMixer) {
 	_system = system;
 	_mixer = pMixer;
-	_mixer->setupPremix(passMixerFunc, this);
+	_sampleRate = pMixer->getOutputRate();
+	_mixer->setupPremix(this);
 	_mutex = _system->createMutex();
 	_converter[0] = NULL;
 	_converter[1] = NULL;
@@ -248,12 +249,9 @@
 		_system->deleteMutex(_mutex);
 }
 
-void Music::passMixerFunc(void *param, int16 *buf, uint len) {
-	((Music*)param)->mixer(buf, len);
-}
-
 void Music::mixer(int16 *buf, uint32 len) {
 	Common::StackLock lock(_mutex);
+	memset(buf, 0, 2 * len * sizeof(int16));
 	for (int i = 0; i < ARRAYSIZE(_handles); i++)
 		if (_handles[i].streaming() && _converter[i])
 			_converter[i]->flow(_handles[i], buf, len, _volumeL, _volumeR);

Index: music.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sword1/music.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- music.h	12 Oct 2004 15:50:00 -0000	1.12
+++ music.h	27 Nov 2004 16:18:25 -0000	1.13
@@ -83,7 +83,7 @@
 	int getRate() const;
 };
 
-class Music {
+class Music : public AudioStream {
 public:
 	Music(OSystem *system, SoundMixer *pMixer);
 	~Music();
@@ -91,15 +91,28 @@
 	void fadeDown();
 	void setVolume(uint8 volL, uint8 volR);
 	void giveVolume(uint8 *volL, uint8 *volR);
+
+	// AudioStream API
+	int readBuffer(int16 *buffer, const int numSamples) {
+		mixer(buffer, numSamples / 2);
+		return numSamples;
+	}
+	bool isStereo() const { return true; }
+	bool endOfData() const { return false; }
+	int getRate() const { return _sampleRate; }
+
 private:
 	st_volume_t _volumeL, _volumeR;
 	MusicHandle _handles[2];
 	RateConverter *_converter[2];
 	OSystem *_system;
 	SoundMixer *_mixer;
+	uint32 _sampleRate;
 	OSystem::MutexRef _mutex;
+
 	static void passMixerFunc(void *param, int16 *buf, uint len);
 	void mixer(int16 *buf, uint32 len);
+
 	static const char _tuneList[TOTAL_TUNES][8]; // in staticres.cpp
 };
 





More information about the Scummvm-git-logs mailing list