[Scummvm-cvs-logs] CVS: residual smush.cpp,1.24,1.25 sound.cpp,1.6,1.7 vima.cpp,1.2,1.3

Pawel Kolodziejski aquadran at users.sourceforge.net
Sun Feb 22 00:36:00 CET 2004


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

Modified Files:
	smush.cpp sound.cpp vima.cpp 
Log Message:
each thread has own decompress temporary table

Index: smush.cpp
===================================================================
RCS file: /cvsroot/scummvm/residual/smush.cpp,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -d -r1.24 -r1.25
--- smush.cpp	22 Feb 2004 06:42:56 -0000	1.24
+++ smush.cpp	22 Feb 2004 08:22:31 -0000	1.25
@@ -67,14 +67,15 @@
 	_blocky16.decode(_dst, src);
 }
 
-void decompressVima(const char *src, int16 *dest, int destLen);
-void vimaInit();
+static uint16 destTable[5786];
+void vimaInit(uint16 *destTable);
+void decompressVima(const char *src, int16 *dest, int destLen, uint16 *destTable);
 
 extern SoundMixer *g_mixer;
 
 void Smush::handleWave(const byte *src, uint32 size) {
 	int16 *dst = new int16[size * _channels];
-	decompressVima((char *)src, dst, size * _channels * 2);
+	decompressVima((char *)src, dst, size * _channels * 2, destTable);
 
 	for (uint32 j = 0; j < size * _channels; j++)
 		dst[j] = SWAP_BYTES_16(dst[j]);
@@ -150,7 +151,7 @@
 		} else if (READ_BE_UINT32(f_header + pos) == MKID_BE('Wave')) {
 			_freq = READ_LE_UINT32(f_header + pos + 8);
 			_channels = READ_LE_UINT32(f_header + pos + 12);
-			vimaInit();
+			vimaInit(destTable);
 			pos += 20;
 		} else {
 			error("unknown tag");

Index: sound.cpp
===================================================================
RCS file: /cvsroot/scummvm/residual/sound.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- sound.cpp	1 Feb 2004 10:48:44 -0000	1.6
+++ sound.cpp	22 Feb 2004 08:22:31 -0000	1.7
@@ -426,11 +426,12 @@
         a = val;
 }
 
-void vimaInit();
-void decompressVima(const char *src, int16 *dest, int destLen);
+static uint16 destTable[5786];
+void vimaInit(uint16 *destTable);
+void decompressVima(const char *src, int16 *dest, int destLen, uint16 *destTable);
 
 void Sound::init() {
-	vimaInit();
+	vimaInit(destTable);
 }
 
 Sound::Sound(const char *filename, const char *data, int /* len */) :
@@ -484,7 +485,7 @@
 		      "VIMA") != 0)
 	error("Unsupported codec %s\n",
 	      codecsStart + 5 * *(uint8 *)(data + 6 + i * 9));
-      decompressVima(srcPos, destPos, READ_BE_UINT32(data + 7 + i * 9));
+      decompressVima(srcPos, destPos, READ_BE_UINT32(data + 7 + i * 9), destTable);
       srcPos += READ_BE_UINT32(data + 11 + i * 9);
       destPos += READ_BE_UINT32(data + 7 + i * 9) / 2;
     }

Index: vima.cpp
===================================================================
RCS file: /cvsroot/scummvm/residual/vima.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- vima.cpp	21 Feb 2004 17:16:51 -0000	1.2
+++ vima.cpp	22 Feb 2004 08:22:31 -0000	1.3
@@ -94,9 +94,7 @@
 	imcOtherTable4, imcOtherTable5, imcOtherTable6
 };
 
-static uint16 destTable[5786];
-
-void vimaInit() {
+void vimaInit(uint16 *destTable) {
 	int destTableStartPos, incer;
 	for (destTableStartPos = 0, incer = 0; destTableStartPos < 64; destTableStartPos++, incer++) {
 	unsigned int destTablePos, imcTable1Pos;
@@ -114,7 +112,7 @@
 	}
 }
 
-void decompressVima(const char *src, int16 *dest, int destLen) {
+void decompressVima(const char *src, int16 *dest, int destLen, uint16 *destTable) {
 	int numChannels = 1;
 	uint8 sBytes[2];
 	int16 sWords[2];





More information about the Scummvm-git-logs mailing list