[Scummvm-cvs-logs] CVS: scummvm/sound audiostream.cpp,1.58,1.59

Pawel Kolodziejski aquadran at users.sourceforge.net
Mon Apr 26 13:49:05 CEST 2004


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

Modified Files:
	audiostream.cpp 
Log Message:
synced code free space with buffer changes

Index: audiostream.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sound/audiostream.cpp,v
retrieving revision 1.58
retrieving revision 1.59
diff -u -d -r1.58 -r1.59
--- audiostream.cpp	25 Apr 2004 18:43:37 -0000	1.58
+++ audiostream.cpp	26 Apr 2004 20:48:09 -0000	1.59
@@ -198,8 +198,10 @@
 	byte *_end;
 	bool _finalized;
 	const int _rate;
+	uint32 _freeSpace;
 
 	inline bool eosIntern() const { return _end == _pos; };
+	void updateFreeSpace();
 public:
 	AppendableMemoryStream(int rate, uint bufferSize);
 	~AppendableMemoryStream()		{ free(_bufferStart); }
@@ -217,6 +219,16 @@
 	uint32 getFreeSpace();
 };
 
+template<bool stereo, bool is16Bit, bool isUnsigned>
+void AppendableMemoryStream<stereo, is16Bit, isUnsigned>::updateFreeSpace() {
+	if (_pos <= _end) {
+		uint32 free_from_end = _bufferEnd - _end;
+		uint32 free_to_pos = _pos - _bufferStart;
+		_freeSpace = free_from_end + free_to_pos;
+	} else {
+		_freeSpace = _pos - _end;
+	}
+}
 
 template<bool stereo, bool is16Bit, bool isUnsigned>
 AppendableMemoryStream<stereo, is16Bit, isUnsigned>::AppendableMemoryStream(int rate, uint bufferSize)
@@ -231,6 +243,8 @@
 	_bufferStart = (byte *)malloc(bufferSize);
 	_pos = _end = _bufferStart;
 	_bufferEnd = _bufferStart + bufferSize;
+
+	updateFreeSpace();
 }
 
 template<bool stereo, bool is16Bit, bool isUnsigned>
@@ -244,6 +258,8 @@
 	int16 val = READSAMPLE(is16Bit, isUnsigned, _pos);
 	_pos += (is16Bit ? 2 : 1);
 
+	updateFreeSpace();
+
 	return val;
 }
 
@@ -263,6 +279,9 @@
 			samples++;
 		}
 	}
+
+	updateFreeSpace();
+
 	return samples;
 }
 
@@ -297,21 +316,12 @@
 		memcpy(_end, data, len);
 		_end += len;
 	}
+	updateFreeSpace();
 }
 
 template<bool stereo, bool is16Bit, bool isUnsigned>
 uint32 AppendableMemoryStream<stereo, is16Bit, isUnsigned>::getFreeSpace() {
-	uint32 free;
-
-	if (_pos <= _end) {
-		uint32 free_from_end = _bufferEnd - _end;
-		uint32 free_to_pos = _pos - _bufferStart;
-		free = free_from_end + free_to_pos;
-	} else {
-		free = _pos - _end;
-	}
-	
-	return free;
+	return _freeSpace;
 }
 
 #pragma mark -





More information about the Scummvm-git-logs mailing list