[Scummvm-cvs-logs] CVS: scummvm/sword1 music.cpp,1.32,1.33
Chris Apers
chrilith at users.sourceforge.net
Fri Dec 10 07:13:01 CET 2004
Update of /cvsroot/scummvm/scummvm/sword1
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12824
Modified Files:
music.cpp
Log Message:
Reading from memory card is too slow
Index: music.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sword1/music.cpp,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -d -r1.32 -r1.33
--- music.cpp 9 Dec 2004 16:33:54 -0000 1.32
+++ music.cpp 10 Dec 2004 15:11:53 -0000 1.33
@@ -63,12 +63,34 @@
int WaveAudioStream::readBuffer(int16 *buffer, const int numSamples) {
int samples = ((int)_samplesLeft < numSamples) ? (int)_samplesLeft : numSamples;
+
+#ifdef __PALM_OS__
+ int cnt = samples;
+ int size = (_bitsPerSample == 16 ? samples * 2 : samples);
+ void *sound = malloc(size);
+
+ _sourceFile->read(sound, size);
+
+ if (_bitsPerSample == 16) {
+ int16 *src = (int16 *)sound;
+ while(cnt--)
+ *buffer++ = (int16)READ_LE_UINT16(src++);
+
+ } else {
+ int8 *src = (int8 *)sound;
+ while(cnt--)
+ *buffer++ = (int16)*src++ << 8;
+ }
+
+ free(sound);
+#else
if (_bitsPerSample == 16)
for (int cnt = 0; cnt < samples; cnt++)
*buffer++ = (int16)_sourceFile->readUint16LE();
else
for (int cnt = 0; cnt < samples; cnt++)
*buffer++ = (int16)_sourceFile->readByte() << 8;
+#endif
_samplesLeft -= samples;
return samples;
}
More information about the Scummvm-git-logs
mailing list