aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm/imuse_digi
diff options
context:
space:
mode:
Diffstat (limited to 'engines/scumm/imuse_digi')
-rw-r--r--engines/scumm/imuse_digi/dimuse.h1
-rw-r--r--engines/scumm/imuse_digi/dimuse_script.cpp13
2 files changed, 14 insertions, 0 deletions
diff --git a/engines/scumm/imuse_digi/dimuse.h b/engines/scumm/imuse_digi/dimuse.h
index 11b1ea678b..02f899df85 100644
--- a/engines/scumm/imuse_digi/dimuse.h
+++ b/engines/scumm/imuse_digi/dimuse.h
@@ -161,6 +161,7 @@ public:
int32 getCurVoiceLipSyncHeight();
int32 getCurMusicLipSyncWidth(int syncId);
int32 getCurMusicLipSyncHeight(int syncId);
+ int32 getSoundElapsedTimeInMs(int soundId);
};
} // End of namespace Scumm
diff --git a/engines/scumm/imuse_digi/dimuse_script.cpp b/engines/scumm/imuse_digi/dimuse_script.cpp
index f181e5b6db..3913a1a1f0 100644
--- a/engines/scumm/imuse_digi/dimuse_script.cpp
+++ b/engines/scumm/imuse_digi/dimuse_script.cpp
@@ -408,6 +408,19 @@ int32 IMuseDigital::getCurMusicLipSyncHeight(int syncId) {
return height;
}
+int32 IMuseDigital::getSoundElapsedTimeInMs(int soundId) {
+ Common::StackLock lock(_mutex, "IMuseDigital::getPosInMs()");
+ for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
+ Track *track = _track[l];
+ if (track->used && !track->toBeRemoved && (track->soundId == soundId)) {
+ int32 pos = (_mixer->getSoundElapsedTime(track->mixChanHandle));
+ return pos;
+ }
+ }
+
+ return 0;
+}
+
void IMuseDigital::stopAllSounds() {
Common::StackLock lock(_mutex, "IMuseDigital::stopAllSounds()");
debug(5, "IMuseDigital::stopAllSounds");