[Scummvm-cvs-logs] CVS: scummvm/scumm/imuse_digi dimuse.cpp,1.137,1.138 dimuse_script.cpp,1.43,1.44 dimuse_track.cpp,1.59,1.60
Pawel Kolodziejski
aquadran at users.sourceforge.net
Sun Feb 5 11:59:01 CET 2006
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/gui ThemeNew.cpp,1.22,1.23
- Next message: [Scummvm-cvs-logs] CVS: residual driver.h,1.19,1.20 driver_sdl.cpp,1.2,1.3 driver_sdl.h,1.2,1.3 engine.cpp,1.102,1.103 engine.h,1.41,1.42 lua.cpp,1.167,1.168
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/scumm/imuse_digi
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27494
Modified Files:
dimuse.cpp dimuse_script.cpp dimuse_track.cpp
Log Message:
- changed logic of allocation fade tracks, now each normal track have own static fade track, (i know about affect on savagame state of imuse, but it's minor thing),
- added more thread locks, i hope they are create deadlocks somewhere
Index: dimuse.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse.cpp,v
retrieving revision 1.137
retrieving revision 1.138
diff -u -d -r1.137 -r1.138
--- dimuse.cpp 5 Feb 2006 13:46:39 -0000 1.137
+++ dimuse.cpp 5 Feb 2006 19:57:58 -0000 1.138
@@ -378,10 +378,12 @@
if (track->curHookId == sampleHookId) {
if (fadeDelay != 0) {
Track *fadeTrack = cloneToFadeOutTrack(track, fadeDelay);
- fadeTrack->dataOffset = _sound->getRegionOffset(fadeTrack->soundHandle, fadeTrack->curRegion);
- fadeTrack->regionOffset = 0;
- debug(5, "switchToNextRegion-sound(%d) select region %d, curHookId: %d", fadeTrack->soundId, fadeTrack->curRegion, fadeTrack->curHookId);
- fadeTrack->curHookId = 0;
+ if (fadeTrack) {
+ fadeTrack->dataOffset = _sound->getRegionOffset(fadeTrack->soundHandle, fadeTrack->curRegion);
+ fadeTrack->regionOffset = 0;
+ debug(5, "switchToNextRegion-sound(%d) select region %d, curHookId: %d", fadeTrack->soundId, fadeTrack->curRegion, fadeTrack->curHookId);
+ fadeTrack->curHookId = 0;
+ }
}
track->curRegion = region;
debug(5, "switchToNextRegion-sound(%d) jump to region %d, curHookId: %d", track->soundId, track->curRegion, track->curHookId);
@@ -390,9 +392,11 @@
} else {
if (fadeDelay != 0) {
Track *fadeTrack = cloneToFadeOutTrack(track, fadeDelay);
- fadeTrack->dataOffset = _sound->getRegionOffset(fadeTrack->soundHandle, fadeTrack->curRegion);
- fadeTrack->regionOffset = 0;
- debug(5, "switchToNextRegion-sound(%d) select region %d, curHookId: %d", fadeTrack->soundId, fadeTrack->curRegion, fadeTrack->curHookId);
+ if (fadeTrack) {
+ fadeTrack->dataOffset = _sound->getRegionOffset(fadeTrack->soundHandle, fadeTrack->curRegion);
+ fadeTrack->regionOffset = 0;
+ debug(5, "switchToNextRegion-sound(%d) select region %d, curHookId: %d", fadeTrack->soundId, fadeTrack->curRegion, fadeTrack->curHookId);
+ }
}
track->curRegion = region;
debug(5, "switchToNextRegion-sound(%d) jump to region %d, curHookId: %d", track->soundId, track->curRegion, track->curHookId);
Index: dimuse_script.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse_script.cpp,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -d -r1.43 -r1.44
--- dimuse_script.cpp 5 Feb 2006 14:57:48 -0000 1.43
+++ dimuse_script.cpp 5 Feb 2006 19:57:59 -0000 1.44
@@ -160,6 +160,7 @@
}
void IMuseDigital::flushTracks() {
+ Common::StackLock lock(_mutex, "IMuseDigital::flushTracks()");
debug(5, "flushTracks()");
for (int l = 0; l < MAX_DIGITAL_TRACKS + MAX_DIGITAL_FADETRACKS; l++) {
Track *track = _track[l];
@@ -190,6 +191,7 @@
}
void IMuseDigital::refreshScripts() {
+ Common::StackLock lock(_mutex, "IMuseDigital::refreshScripts()");
debug(5, "refreshScripts()");
bool found = false;
for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
@@ -236,6 +238,7 @@
msPos /= 16;
if (msPos < 65536) {
+ Common::StackLock lock(_mutex, "IMuseDigital::getLipSync()");
for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
Track *track = _track[l];
if ((track->soundId == soundId) && track->used && !track->toBeRemoved) {
@@ -263,6 +266,7 @@
}
int32 IMuseDigital::getPosInMs(int soundId) {
+ Common::StackLock lock(_mutex, "IMuseDigital::getPosInMs()");
for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
Track *track = _track[l];
if ((track->soundId == soundId) && track->used && !track->toBeRemoved) {
@@ -275,6 +279,7 @@
}
int IMuseDigital::getSoundStatus(int sound) const {
+ Common::StackLock lock(_mutex, "IMuseDigital::getSoundStatus()");
debug(5, "IMuseDigital::getSoundStatus(%d)", sound);
for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
Track *track = _track[l];
@@ -290,6 +295,7 @@
}
void IMuseDigital::stopSound(int soundId) {
+ Common::StackLock lock(_mutex, "IMuseDigital::stopSound()");
debug(5, "IMuseDigital::stopSound(%d)", soundId);
for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
Track *track = _track[l];
@@ -300,6 +306,7 @@
}
int32 IMuseDigital::getCurMusicPosInMs() {
+ Common::StackLock lock(_mutex, "IMuseDigital::getCurMusicPosInMs()");
int soundId = -1;
for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
@@ -315,6 +322,7 @@
}
int32 IMuseDigital::getCurVoiceLipSyncWidth() {
+ Common::StackLock lock(_mutex, "IMuseDigital::getCurVoiceLipSyncWidth()");
int32 msPos = getPosInMs(kTalkSoundID) + 50;
int32 width = 0, height = 0;
@@ -324,6 +332,7 @@
}
int32 IMuseDigital::getCurVoiceLipSyncHeight() {
+ Common::StackLock lock(_mutex, "IMuseDigital::getCurVoiceLipSyncHeight()");
int32 msPos = getPosInMs(kTalkSoundID) + 50;
int32 width = 0, height = 0;
@@ -333,6 +342,7 @@
}
int32 IMuseDigital::getCurMusicLipSyncWidth(int syncId) {
+ Common::StackLock lock(_mutex, "IMuseDigital::getCurMusicLipSyncWidth()");
int soundId = -1;
for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
@@ -351,6 +361,7 @@
}
int32 IMuseDigital::getCurMusicLipSyncHeight(int syncId) {
+ Common::StackLock lock(_mutex, "IMuseDigital::getCurMusicLipSyncHeight()");
int soundId = -1;
for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
Index: dimuse_track.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse_track.cpp,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -d -r1.59 -r1.60
--- dimuse_track.cpp 5 Feb 2006 13:46:39 -0000 1.59
+++ dimuse_track.cpp 5 Feb 2006 19:57:59 -0000 1.60
@@ -186,6 +186,7 @@
}
void IMuseDigital::setPriority(int soundId, int priority) {
+ Common::StackLock lock(_mutex, "IMuseDigital::setPriority()");
debug(5, "IMuseDigital::setPriority(%d, %d)", soundId, priority);
assert ((priority >= 0) && (priority <= 127));
@@ -198,6 +199,7 @@
}
void IMuseDigital::setVolume(int soundId, int volume) {
+ Common::StackLock lock(_mutex, "IMuseDigital::setVolume()");
debug(5, "IMuseDigital::setVolume(%d, %d)", soundId, volume);
for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
@@ -220,6 +222,7 @@
}
int IMuseDigital::getCurMusicSoundId() {
+ Common::StackLock lock(_mutex, "IMuseDigital::getCurMusicSoundId()");
int soundId = -1;
for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
@@ -233,6 +236,7 @@
}
char *IMuseDigital::getCurMusicSoundName() {
+ Common::StackLock lock(_mutex, "IMuseDigital::getCurMusicSoundName()");
char *soundName = NULL;
for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
@@ -246,6 +250,7 @@
}
void IMuseDigital::setPan(int soundId, int pan) {
+ Common::StackLock lock(_mutex, "IMuseDigital::setPan()");
debug(5, "IMuseDigital::setPan(%d, %d)", soundId, pan);
for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
@@ -257,6 +262,7 @@
}
void IMuseDigital::selectVolumeGroup(int soundId, int volGroupId) {
+ Common::StackLock lock(_mutex, "IMuseDigital::selectVolumeGroup()");
debug(5, "IMuseDigital::setGroupVolume(%d, %d)", soundId, volGroupId);
assert((volGroupId >= 1) && (volGroupId <= 4));
@@ -287,7 +293,9 @@
}
void IMuseDigital::fadeOutMusic(int fadeDelay) {
+ Common::StackLock lock(_mutex, "IMuseDigital::fadeOutMusic()");
debug(5, "IMuseDigital::fadeOutMusic");
+
for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
Track *track = _track[l];
if (track->used && !track->toBeRemoved && (track->volGroupId == IMUSE_VOLGRP_MUSIC)) {
@@ -298,45 +306,40 @@
}
IMuseDigital::Track *IMuseDigital::cloneToFadeOutTrack(Track *track, int fadeDelay) {
+ Common::StackLock lock(_mutex, "IMuseDigital::cloneToFadeOutTrack()");
assert(track);
Track *fadeTrack = 0;
debug(5, "IMuseDigital::cloneToFadeOutTrack(%d, %d)", track->trackId, fadeDelay);
- {
- Common::StackLock lock(_mutex, "IMuseDigital::cloneToFadeOutTrack()");
- for (int l = MAX_DIGITAL_TRACKS; l < MAX_DIGITAL_TRACKS + MAX_DIGITAL_FADETRACKS; l++) {
- if (!_track[l]->used) {
- fadeTrack = _track[l];
- break;
- }
- }
- if (fadeTrack == 0)
- error("IMuseDigital::cloneToFadeOutTrack() Can't find free fade track");
-
- fadeTrack->pan = track->pan;
- fadeTrack->vol = track->vol;
- fadeTrack->volGroupId = track->volGroupId;
- fadeTrack->priority = track->priority;
- fadeTrack->soundId = track->soundId;
- fadeTrack->dataOffset = track->dataOffset;
- fadeTrack->regionOffset = track->regionOffset;
- fadeTrack->curRegion = track->curRegion;
- fadeTrack->curHookId = track->curHookId;
- fadeTrack->iteration = track->iteration;
- fadeTrack->mixerFlags = track->mixerFlags;
- fadeTrack->mod = track->mod;
- fadeTrack->toBeRemoved = track->toBeRemoved;
- fadeTrack->readyToRemove = track->readyToRemove;
- fadeTrack->souStream = track->souStream;
- fadeTrack->started = track->started;
- fadeTrack->stream2 = track->stream2;
- strcpy(fadeTrack->soundName, track->soundName);
- fadeTrack->soundType = track->soundType;
- fadeTrack->soundHandle = _sound->cloneSound(track->soundHandle);
- assert(fadeTrack->soundHandle);
+ if (_track[track->trackId + MAX_DIGITAL_TRACKS]->used) {
+ warning("IMuseDigital::cloneToFadeOutTrack: Not free fade track");
+ return NULL;
}
+ fadeTrack = _track[track->trackId + MAX_DIGITAL_TRACKS];
+ fadeTrack->pan = track->pan;
+ fadeTrack->vol = track->vol;
+ fadeTrack->volGroupId = track->volGroupId;
+ fadeTrack->priority = track->priority;
+ fadeTrack->soundId = track->soundId;
+ fadeTrack->dataOffset = track->dataOffset;
+ fadeTrack->regionOffset = track->regionOffset;
+ fadeTrack->curRegion = track->curRegion;
+ fadeTrack->curHookId = track->curHookId;
+ fadeTrack->iteration = track->iteration;
+ fadeTrack->mixerFlags = track->mixerFlags;
+ fadeTrack->mod = track->mod;
+ fadeTrack->toBeRemoved = track->toBeRemoved;
+ fadeTrack->readyToRemove = track->readyToRemove;
+ fadeTrack->souStream = track->souStream;
+ fadeTrack->started = track->started;
+ fadeTrack->stream2 = track->stream2;
+ strcpy(fadeTrack->soundName, track->soundName);
+ fadeTrack->soundType = track->soundType;
+ fadeTrack->soundHandle = _sound->cloneSound(track->soundHandle);
+ assert(fadeTrack->soundHandle);
+
fadeTrack->volFadeDelay = fadeDelay;
fadeTrack->volFadeDest = 0;
fadeTrack->volFadeStep = (fadeTrack->volFadeDest - fadeTrack->vol) * 60 * (1000 / _callbackFps) / (1000 * fadeDelay);
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/gui ThemeNew.cpp,1.22,1.23
- Next message: [Scummvm-cvs-logs] CVS: residual driver.h,1.19,1.20 driver_sdl.cpp,1.2,1.3 driver_sdl.h,1.2,1.3 engine.cpp,1.102,1.103 engine.h,1.41,1.42 lua.cpp,1.167,1.168
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list