[Scummvm-cvs-logs] SF.net SVN: scummvm:[40435] scummvm/trunk/engines/agi/sound.cpp
wjpalenstijn at users.sourceforge.net
wjpalenstijn at users.sourceforge.net
Sun May 10 22:42:46 CEST 2009
Revision: 40435
http://scummvm.svn.sourceforge.net/scummvm/?rev=40435&view=rev
Author: wjpalenstijn
Date: 2009-05-10 20:42:46 +0000 (Sun, 10 May 2009)
Log Message:
-----------
clean up AGI fillAudio
Modified Paths:
--------------
scummvm/trunk/engines/agi/sound.cpp
Modified: scummvm/trunk/engines/agi/sound.cpp
===================================================================
--- scummvm/trunk/engines/agi/sound.cpp 2009-05-10 20:13:43 UTC (rev 40434)
+++ scummvm/trunk/engines/agi/sound.cpp 2009-05-10 20:42:46 UTC (rev 40435)
@@ -1191,28 +1191,29 @@
void SoundMgr::fillAudio(void *udata, int16 *stream, uint len) {
SoundMgr *soundMgr = (SoundMgr *)udata;
uint32 p = 0;
- static uint32 n = 0, s = 0;
+ // current number of audio bytes in _sndBuffer
+ static uint32 data_available = 0;
+ // offset of start of audio bytes in _sndBuffer
+ static uint32 data_offset = 0;
+
len <<= 2;
debugC(5, kDebugLevelSound, "(%p, %p, %d)", (void *)udata, (void *)stream, len);
- memcpy(stream, (uint8 *)_sndBuffer + s, p = n);
- for (n = 0, len -= p; n < len; p += n, len -= n) {
+
+ while (len > data_available) {
+ memcpy((uint8 *)stream + p, (uint8*)_sndBuffer + data_offset, data_available);
+ p += data_available;
+ len -= data_available;
+
soundMgr->playSound();
- n = soundMgr->mixSound() << 1;
- if (len < n) {
- memcpy((uint8 *)stream + p, _sndBuffer, len);
- s = len;
- n -= s;
- return;
- } else {
- memcpy((uint8 *)stream + p, _sndBuffer, n);
- }
+ data_available = soundMgr->mixSound() << 1;
+ data_offset = 0;
}
- soundMgr->playSound();
- n = soundMgr->mixSound() << 1;
- memcpy((uint8 *)stream + p, _sndBuffer, s = len);
- n -= s;
+
+ memcpy((uint8 *)stream + p, (uint8*)_sndBuffer + data_offset, len);
+ data_offset += len;
+ data_available -= len;
}
SoundMgr::SoundMgr(AgiBase *agi, Audio::Mixer *pMixer) : _chn() {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list