mirror of
https://github.com/scummvm/scummvm.git
synced 2026-06-20 05:45:29 +00:00
synced code free space with buffer changes
svn-id: r13646
This commit is contained in:
+21
-11
@@ -198,8 +198,10 @@ protected:
|
||||
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 @@ public:
|
||||
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 @@ AppendableMemoryStream<stereo, is16Bit, isUnsigned>::AppendableMemoryStream(int
|
||||
_bufferStart = (byte *)malloc(bufferSize);
|
||||
_pos = _end = _bufferStart;
|
||||
_bufferEnd = _bufferStart + bufferSize;
|
||||
|
||||
updateFreeSpace();
|
||||
}
|
||||
|
||||
template<bool stereo, bool is16Bit, bool isUnsigned>
|
||||
@@ -244,6 +258,8 @@ inline int16 AppendableMemoryStream<stereo, is16Bit, isUnsigned>::read() {
|
||||
int16 val = READSAMPLE(is16Bit, isUnsigned, _pos);
|
||||
_pos += (is16Bit ? 2 : 1);
|
||||
|
||||
updateFreeSpace();
|
||||
|
||||
return val;
|
||||
}
|
||||
|
||||
@@ -263,6 +279,9 @@ int AppendableMemoryStream<stereo, is16Bit, isUnsigned>::readBuffer(int16 *buffe
|
||||
samples++;
|
||||
}
|
||||
}
|
||||
|
||||
updateFreeSpace();
|
||||
|
||||
return samples;
|
||||
}
|
||||
|
||||
@@ -297,21 +316,12 @@ void AppendableMemoryStream<stereo, is16Bit, isUnsigned>::append(const byte *dat
|
||||
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 -
|
||||
|
||||
Reference in New Issue
Block a user