From 7fcbc7319c8af0058f3fb58697ca69344fead0ed Mon Sep 17 00:00:00 2001 From: galaxyhaxz Date: Sun, 12 May 2019 16:25:20 -0500 Subject: [PATCH] Fix merged function `sound_update` --- 3rdParty/Storm/Source/storm.cpp | 2 +- 3rdParty/Storm/Source/storm.h | 2 +- Source/effects.cpp | 9 +++++++-- Source/effects.h | 1 + 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/3rdParty/Storm/Source/storm.cpp b/3rdParty/Storm/Source/storm.cpp index da7688b08..21828a12e 100644 --- a/3rdParty/Storm/Source/storm.cpp +++ b/3rdParty/Storm/Source/storm.cpp @@ -67,7 +67,7 @@ BOOL STORMAPI SFileCloseFile(HANDLE hFile) rBool; BOOL STORMAPI SFileDdaBeginEx(HANDLE hFile, DWORD flags, DWORD mask, unsigned __int32 lDistanceToMove, signed __int32 volume, signed int a6, int a7) rBool; BOOL STORMAPI SFileDdaDestroy() rBool; BOOL STORMAPI SFileDdaEnd(HANDLE hFile) rBool; -BOOL STORMAPI SFileDdaGetPos(HANDLE hFile, int *current, int *end) rBool; +BOOL STORMAPI SFileDdaGetPos(HANDLE hFile, DWORD *current, DWORD *end) rBool; BOOL STORMAPI SFileDdaInitialize(HANDLE directsound) rBool; BOOL STORMAPI SFileDdaSetVolume(HANDLE hFile, signed int bigvolume, signed int volume) rBool; diff --git a/3rdParty/Storm/Source/storm.h b/3rdParty/Storm/Source/storm.h index 751d22b32..52954f76a 100644 --- a/3rdParty/Storm/Source/storm.h +++ b/3rdParty/Storm/Source/storm.h @@ -497,7 +497,7 @@ BOOL STORMAPI SFileCloseFile(HANDLE hFile); BOOL STORMAPI SFileDdaBeginEx(HANDLE hFile, DWORD flags, DWORD mask, unsigned __int32 lDistanceToMove, signed __int32 volume, signed int pan, int a7); BOOL STORMAPI SFileDdaDestroy(); BOOL STORMAPI SFileDdaEnd(HANDLE hFile); -BOOL STORMAPI SFileDdaGetPos(HANDLE hFile, int *current, int *end); +BOOL STORMAPI SFileDdaGetPos(HANDLE hFile, DWORD *current, DWORD *end); BOOL STORMAPI SFileDdaInitialize(HANDLE directsound); BOOL STORMAPI SFileDdaSetVolume(HANDLE hFile, signed int bigvolume, signed int volume); diff --git a/Source/effects.cpp b/Source/effects.cpp index e6997cbe0..914e4048a 100644 --- a/Source/effects.cpp +++ b/Source/effects.cpp @@ -1144,13 +1144,18 @@ void sound_stop() void sound_update() { - int current, end; - if (!gbSndInited) { return; } snd_update(FALSE); + effects_update(); +} + +void effects_update() +{ + DWORD current, end; + if (sfx_stream != NULL && SFileDdaGetPos(sfx_stream, ¤t, &end) && current >= end) { sfx_stop(); } diff --git a/Source/effects.h b/Source/effects.h index 3741bcbbf..ce9f2ad31 100644 --- a/Source/effects.h +++ b/Source/effects.h @@ -21,6 +21,7 @@ void PlaySfxLoc(int psfx, int x, int y); void FreeMonsterSnd(); void sound_stop(); void sound_update(); +void effects_update(); void effects_cleanup_sfx(); void stream_update(); void priv_sound_init(UCHAR bLoadMask);