[Scummvm-cvs-logs] CVS: scummvm/scumm/imuse_digi dimuse_sndmgr.cpp,1.16,1.17 dimuse_sndmgr.h,1.10,1.11

Pawel Kolodziejski aquadran at users.sourceforge.net
Fri Jan 9 12:21:01 CET 2004


Update of /cvsroot/scummvm/scummvm/scumm/imuse_digi
In directory sc8-pr-cvs1:/tmp/cvs-serv10608

Modified Files:
	dimuse_sndmgr.cpp dimuse_sndmgr.h 
Log Message:
added loading Sync datas

Index: dimuse_sndmgr.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse_sndmgr.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- dimuse_sndmgr.cpp	9 Jan 2004 15:13:56 -0000	1.16
+++ dimuse_sndmgr.cpp	9 Jan 2004 20:20:01 -0000	1.17
@@ -116,7 +116,17 @@
 				_sounds[slot].numJumps++;
 				break;
 			case MKID_BE('SYNC'):
-				size = READ_BE_UINT32(ptr); ptr += size + 4;
+				size = READ_BE_UINT32(ptr); ptr += 4;
+				if (_sounds[slot].numSyncs >= MAX_IMUSE_SYNCS) {
+					warning("ImuseDigiSndMgr::prepareSound(%d/%s) Not enough space for Sync", _sounds[slot].soundId, _sounds[slot].name);
+					ptr += size;
+					break;
+				}
+				_sounds[slot].sync[_sounds[slot].numSyncs].size = size;
+				_sounds[slot].sync[_sounds[slot].numSyncs].ptr = (byte *)malloc(size);
+				memcpy(_sounds[slot].sync[_sounds[slot].numSyncs].ptr, ptr, size);
+				_sounds[slot].numSyncs++;
+				ptr += size;
 				break;
 			case MKID_BE('DATA'):
 				size = READ_BE_UINT32(ptr); ptr += 4;
@@ -271,6 +281,8 @@
 				free(_sounds[l].resPtr);
 			if (_sounds[l]._bundle)
 				delete _sounds[l]._bundle;
+			for (int r = 0; r < _sounds[l].numSyncs; r++)
+				free(_sounds[l].sync[r].ptr);
 			memset(&_sounds[l], 0, sizeof(soundStruct));
 		}
 	}

Index: dimuse_sndmgr.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse_sndmgr.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- dimuse_sndmgr.h	8 Jan 2004 20:37:26 -0000	1.10
+++ dimuse_sndmgr.h	9 Jan 2004 20:20:01 -0000	1.11
@@ -38,6 +38,7 @@
 #define MAX_IMUSE_JUMPS 80
 #define MAX_IMUSE_REGIONS 85
 #define MAX_IMUSE_MARKERS 60
+#define MAX_IMUSE_SYNCS 4
 
 #define IMUSE_RESOURCE 1
 #define IMUSE_BUNDLE 2
@@ -61,6 +62,11 @@
 	struct _marker {
 		char name[256];		// name of marker
 	};
+
+	struct _sync {
+		int32 size;		// size of sync
+		byte *ptr;		// pointer to sync
+	};
 	
 public:
 
@@ -71,6 +77,7 @@
 		int numJumps;		// number of Jumps
 		int numRegions;		// number of Regions
 		int numMarkers;		// number of Markers
+		int numSyncs;		// number of Syncs
 		int32 offsetStop;	// end offset in source data
 		bool endFlag;
 		bool inUse;
@@ -84,6 +91,7 @@
 		_region region[MAX_IMUSE_REGIONS];
 		_marker marker[MAX_IMUSE_MARKERS];
 		_jump jump[MAX_IMUSE_JUMPS];
+		_sync sync[MAX_IMUSE_SYNCS];
 	};
 
 private:





More information about the Scummvm-git-logs mailing list