[Scummvm-cvs-logs] CVS: scummvm/scumm/imuse_digi dimuse.cpp,1.21,1.22 dimuse.h,1.13,1.14 dimuse_sndmgr.cpp,1.19,1.20 dimuse_sndmgr.h,1.13,1.14
Pawel Kolodziejski
aquadran at users.sourceforge.net
Fri Jan 9 23:08:00 CET 2004
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/scumm debugger.cpp,1.111,1.112 debugger.h,1.33,1.34 script.cpp,1.143,1.144 scumm.h,1.355,1.356
- Next message: [Scummvm-cvs-logs] CVS: tools descumm.vcproj,1.3,1.4 extract.vcproj,1.2,1.3 queenrebuild.vcproj,1.1,1.2 rescumm.vcproj,1.2,1.3 simon2mp3.vcproj,1.2,1.3 util.h,1.10,1.11
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/scumm/imuse_digi
In directory sc8-pr-cvs1:/tmp/cvs-serv23562
Modified Files:
dimuse.cpp dimuse.h dimuse_sndmgr.cpp dimuse_sndmgr.h
Log Message:
removed stackLock and added locking tracks to prevent removed
Index: dimuse.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse.cpp,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -r1.21 -r1.22
--- dimuse.cpp 10 Jan 2004 03:58:22 -0000 1.21
+++ dimuse.cpp 10 Jan 2004 07:07:19 -0000 1.22
@@ -72,7 +72,7 @@
continue;
}
} else if (_track[l].stream) {
- if (_track[l].toBeRemoved) {
+ if ((!_track[l].locked) && (_track[l].toBeRemoved)) {
debug(5, "IMuseDigital::callback(): stoped sound: %d", _track[l].idSound);
if (_track[l].stream)
_track[l].stream->finish();
@@ -289,6 +289,7 @@
_curMusicId = soundId;
}
+ _track[l].locked = false;
_track[l].used = true;
return;
}
@@ -299,11 +300,13 @@
void IMuseDigital::stopMusic() {
debug(5, "IMuseDigital::stopMusic()");
for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
+ _track[l].locked = true;
if ((_track[l].idSound == _curMusicId) && _track[l].used) {
if (_track[l].stream) {
_track[l].toBeRemoved = true;
}
}
+ _track[l].locked = false;
}
_curMusicId = -1;
}
@@ -311,6 +314,7 @@
void IMuseDigital::stopSound(int soundId) {
debug(5, "IMuseDigital::stopSound(%d)", soundId);
for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
+ _track[l].locked = true;
if ((_track[l].idSound == soundId) && _track[l].used) {
if (_track[l].stream) {
_track[l].toBeRemoved = true;
@@ -318,18 +322,21 @@
else if (_track[l].stream2)
_vm->_mixer->stopHandle(_track[l].handle);
}
+ _track[l].locked = false;
}
}
void IMuseDigital::stopAllSounds(bool waitForStop) {
debug(5, "IMuseDigital::stopAllSounds");
for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
+ _track[l].locked = true;
if (_track[l].used) {
if (_track[l].stream) {
_track[l].toBeRemoved = true;
} else if (_track[l].stream2)
_vm->_mixer->stopHandle(_track[l].handle);
}
+ _track[l].locked = false;
}
_curMusicId = -1;
@@ -347,9 +354,11 @@
void IMuseDigital::pause(bool p) {
for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
+ _track[l].locked = true;
if (_track[l].used) {
_vm->_mixer->pauseHandle(_track[l].handle, p);
}
+ _track[l].locked = false;
}
_pause = p;
}
@@ -376,11 +385,13 @@
case 0x600: // set volume
debug(5, "ImuseSetParam (0x600), sample(%d), volume(%d)", sample, d);
for (l = 0; l < MAX_DIGITAL_TRACKS; l++) {
+ _track[l].locked = true;
if ((_track[l].idSound == sample) && _track[l].used) {
_track[l].vol = d * 1000;
// if (_track[l].volFadeUsed)
// _track[l].volFadeStep = (_track[l].volFadeDest - _track[l].vol) * 60 * 40 / (1000 * _track[chan].volFadeDelay);
}
+ _track[l].locked = false;
}
if (l == -1) {
debug(5, "ImuseSetParam (0x600), sample(%d) not exist in channels", sample);
@@ -390,9 +401,11 @@
case 0x700: // set pan
debug(5, "ImuseSetParam (0x700), sample(%d), pan(%d)", sample, d);
for (l = 0; l < MAX_DIGITAL_TRACKS; l++) {
+ _track[l].locked = true;
if ((_track[l].idSound == sample) && _track[l].used) {
_track[l].pan = d;
}
+ _track[l].locked = false;
}
if (l == -1) {
debug(5, "ImuseSetParam (0x700), sample(%d) not exist in channels", sample);
@@ -413,6 +426,7 @@
return;
}
for (l = 0; l < MAX_DIGITAL_TRACKS; l++) {
+ _track[l].locked = true;
if ((_track[l].idSound == sample) && _track[l].used) {
_track[l].volFadeDelay = e;
_track[l].volFadeDest = d * 1000;
@@ -420,6 +434,7 @@
_track[l].volFadeUsed = true;
debug(5, "ImuseFadeParam: vol %d, volDest %d, step %d", _track[l].vol, d * 1000, _track[l].volFadeStep);
}
+ _track[l].locked = false;
}
if (chan == -1) {
debug(5, "ImuseFadeParam (0x600), sample %d not exist in channels", sample);
@@ -583,6 +598,7 @@
msPos /= 16;
if (msPos < 65536) {
for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
+ _track[l].locked = true;
if ((_track[l].idSound == soundId) && _track[l].used) {
_sound->getSyncSizeAndPtrById(_track[l].soundHandle, syncId, sync_size, &sync_ptr);
if ((sync_size != 0) && (sync_ptr != NULL)) {
@@ -600,19 +616,24 @@
width = sync_ptr[2];
height = sync_ptr[3];
+ _track[l].locked = false;
return;
}
}
+ _track[l].locked = false;
}
}
}
int32 IMuseDigital::getPosInMs(int soundId) {
for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
+ _track[l].locked = true;
if ((_track[l].idSound == soundId) && _track[l].used) {
int32 pos = 1000 * _track[l].trackOffset / _track[l].iteration;
+ _track[l].locked = false;
return pos;
}
+ _track[l].locked = false;
}
return 0;
Index: dimuse.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- dimuse.h 9 Jan 2004 22:10:32 -0000 1.13
+++ dimuse.h 10 Jan 2004 07:07:19 -0000 1.14
@@ -57,6 +57,7 @@
int soundGroup;
int iteration;
int mod;
+ bool locked;
int32 pullSize;
ImuseDigiSndMgr::soundStruct *soundHandle;
PlayingSoundHandle handle;
Index: dimuse_sndmgr.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse_sndmgr.cpp,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- dimuse_sndmgr.cpp 9 Jan 2004 22:36:40 -0000 1.19
+++ dimuse_sndmgr.cpp 10 Jan 2004 07:07:19 -0000 1.20
@@ -31,7 +31,6 @@
ImuseDigiSndMgr::ImuseDigiSndMgr(ScummEngine *scumm) {
memset(&_sounds, 0, sizeof(_sounds));
_vm = scumm;
- _mutex = g_system->create_mutex();
_disk = 0;
_cacheBundleDir = new BundleDirCache();
BundleCodecs::initializeImcTables();
@@ -42,8 +41,6 @@
if (&_sounds[l])
closeSound(&_sounds[l]);
}
- delete _cacheBundleDir;
- g_system->delete_mutex(_mutex);
#ifdef __PALM_OS__
BundleCodecs::releaseImcTables();
#endif
@@ -209,7 +206,6 @@
ImuseDigiSndMgr::soundStruct *ImuseDigiSndMgr::openSound(int32 soundId, const char *soundName, int soundType, int soundGroup) {
assert(soundId >= 0);
assert(soundType);
- Common::StackLock tmpLock(_mutex);
int slot = allocSlot();
if (slot == -1) {
@@ -273,7 +269,6 @@
void ImuseDigiSndMgr::closeSound(soundStruct *soundHandle) {
assert(soundHandle && checkForProperHandle(soundHandle));
- Common::StackLock tmpLock(_mutex);
for (int l = 0; l < MAX_IMUSE_SOUNDS; l++) {
if (&_sounds[l] == soundHandle) {
@@ -297,50 +292,42 @@
}
int ImuseDigiSndMgr::getFreq(soundStruct *soundHandle) {
- Common::StackLock tmpLock(_mutex);
assert(soundHandle && checkForProperHandle(soundHandle));
return soundHandle->freq;
}
int ImuseDigiSndMgr::getBits(soundStruct *soundHandle) {
- Common::StackLock tmpLock(_mutex);
assert(soundHandle && checkForProperHandle(soundHandle));
return soundHandle->bits;
}
int ImuseDigiSndMgr::getChannels(soundStruct *soundHandle) {
- Common::StackLock tmpLock(_mutex);
assert(soundHandle && checkForProperHandle(soundHandle));
return soundHandle->channels;
}
bool ImuseDigiSndMgr::isEndOfRegion(soundStruct *soundHandle, int region) {
- Common::StackLock tmpLock(_mutex);
assert(soundHandle && checkForProperHandle(soundHandle));
assert(region >= 0 && region < soundHandle->numRegions);
return soundHandle->endFlag;
}
int ImuseDigiSndMgr::getNumRegions(soundStruct *soundHandle) {
- Common::StackLock tmpLock(_mutex);
assert(soundHandle && checkForProperHandle(soundHandle));
return soundHandle->numRegions;
}
int ImuseDigiSndMgr::getNumJumps(soundStruct *soundHandle) {
- Common::StackLock tmpLock(_mutex);
assert(soundHandle && checkForProperHandle(soundHandle));
return soundHandle->numJumps;
}
int ImuseDigiSndMgr::getNumMarkers(soundStruct *soundHandle) {
- Common::StackLock tmpLock(_mutex);
assert(soundHandle && checkForProperHandle(soundHandle));
return soundHandle->numMarkers;
}
int ImuseDigiSndMgr::getJumpIdByRegionId(soundStruct *soundHandle, int number) {
- Common::StackLock tmpLock(_mutex);
assert(soundHandle && checkForProperHandle(soundHandle));
assert(number >= 0 && number < soundHandle->numRegions);
for (int l = 0; l < soundHandle->numJumps; l++) {
@@ -353,7 +340,6 @@
}
void ImuseDigiSndMgr::getSyncSizeAndPtrById(soundStruct *soundHandle, int number, int32 &sync_size, byte **sync_ptr) {
- Common::StackLock tmpLock(_mutex);
assert(soundHandle && checkForProperHandle(soundHandle));
assert(number >= 0);
if (number < soundHandle->numSyncs) {
@@ -366,7 +352,6 @@
}
int ImuseDigiSndMgr::getRegionIdByHookId(soundStruct *soundHandle, int number) {
- Common::StackLock tmpLock(_mutex);
assert(soundHandle && checkForProperHandle(soundHandle));
for (int l = 0; l < soundHandle->numJumps; l++) {
if (soundHandle->jump[l].hookId == number) {
@@ -382,28 +367,24 @@
}
int ImuseDigiSndMgr::getJumpHookId(soundStruct *soundHandle, int number) {
- Common::StackLock tmpLock(_mutex);
assert(soundHandle && checkForProperHandle(soundHandle));
assert(number >= 0 && number < soundHandle->numJumps);
return soundHandle->jump[number].hookId;
}
int ImuseDigiSndMgr::getJumpFade(soundStruct *soundHandle, int number) {
- Common::StackLock tmpLock(_mutex);
assert(soundHandle && checkForProperHandle(soundHandle));
assert(number >= 0 && number < soundHandle->numJumps);
return soundHandle->jump[number].fadeDelay;
}
char *ImuseDigiSndMgr::getMarker(soundStruct *soundHandle, int number) {
- Common::StackLock tmpLock(_mutex);
assert(soundHandle && checkForProperHandle(soundHandle));
assert(number >= 0 && number < soundHandle->numMarkers);
return (char *)(soundHandle->marker[number].name);
}
int32 ImuseDigiSndMgr::getDataFromRegion(soundStruct *soundHandle, int region, byte **buf, int32 offset, int32 size) {
- Common::StackLock tmpLock(_mutex);
assert(soundHandle && checkForProperHandle(soundHandle));
assert(buf && offset >= 0 && size >= 0);
assert(region >= 0 && region < soundHandle->numRegions);
Index: dimuse_sndmgr.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse_sndmgr.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- dimuse_sndmgr.h 9 Jan 2004 22:36:40 -0000 1.13
+++ dimuse_sndmgr.h 10 Jan 2004 07:07:19 -0000 1.14
@@ -103,7 +103,6 @@
void prepareSound(byte *ptr, int slot);
ScummEngine *_vm;
- OSystem::MutexRef _mutex;
byte _disk;
BundleDirCache *_cacheBundleDir;
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/scumm debugger.cpp,1.111,1.112 debugger.h,1.33,1.34 script.cpp,1.143,1.144 scumm.h,1.355,1.356
- Next message: [Scummvm-cvs-logs] CVS: tools descumm.vcproj,1.3,1.4 extract.vcproj,1.2,1.3 queenrebuild.vcproj,1.1,1.2 rescumm.vcproj,1.2,1.3 simon2mp3.vcproj,1.2,1.3 util.h,1.10,1.11
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list