diff --git a/src/i_sound.h b/src/i_sound.h index 50b965325..94548456c 100644 --- a/src/i_sound.h +++ b/src/i_sound.h @@ -251,9 +251,9 @@ void I_SetInternalMusicVolume(UINT8 volume); void I_StopFadingMusic(void); -boolean I_FadeMusicFromLevel(UINT8 target_volume, INT16 source_volume, UINT32 ms); +boolean I_FadeMusicFromLevel(UINT8 target_volume, UINT16 source_volume, UINT32 ms); -#define I_FadeMusic(a, b) I_FadeMusicFromLevel(a, -1, b) +boolean I_FadeMusic(UINT8 target_volume, UINT32 ms); /** \brief The I_StartDigSong function diff --git a/src/s_sound.c b/src/s_sound.c index d7321a618..46ceb549d 100644 --- a/src/s_sound.c +++ b/src/s_sound.c @@ -1488,7 +1488,10 @@ void S_StopFadingMusic(void) boolean S_FadeMusicFromLevel(UINT8 target_volume, INT16 source_volume, UINT32 ms) { - return I_FadeMusicFromLevel(target_volume, source_volume, ms); + if (source_volume < 0) + return I_FadeMusic(target_volume, ms); + else + return I_FadeMusicFromLevel(target_volume, source_volume, ms); } void S_SetDigMusicVolume(INT32 volume) diff --git a/src/sdl/mixer_sound.c b/src/sdl/mixer_sound.c index 3b6fc3111..1b7c81008 100644 --- a/src/sdl/mixer_sound.c +++ b/src/sdl/mixer_sound.c @@ -1189,13 +1189,13 @@ void I_StopFadingMusic(void) fading_target = fading_steps = fading_volume_step = fading_id = 0; } -boolean I_FadeMusicFromLevel(UINT8 target_volume, INT16 source_volume, UINT32 ms) +boolean I_FadeMusicFromLevel(UINT8 target_volume, UINT8 source_volume, UINT32 ms) { UINT32 target_steps, ms_per_step; INT16 target_volume_step, volume_delta; source_volume = min(source_volume, 100); - volume_delta = (INT16)(target_volume - (source_volume < 0 ? internal_volume : source_volume)); + volume_delta = (INT16)(target_volume - source_volume)); I_StopFadingMusic(); @@ -1230,17 +1230,19 @@ boolean I_FadeMusicFromLevel(UINT8 target_volume, INT16 source_volume, UINT32 ms fading_steps = target_steps; fading_volume_step = target_volume_step; - if (source_volume >= 0 && internal_volume != source_volume) + if (internal_volume != source_volume) I_SetInternalMusicVolume(source_volume); } } - CONS_Printf("Target %d> Source %d> MS %d> Steps %d> MSPer %d> VolPer %d> Fading %d\n", - target_volume, internal_volume, ms, target_steps, ms_per_step, target_volume_step, is_fading); - return is_fading; } +boolean I_FadeMusic(UINT8 target_volume, UINT32 ms) +{ + return I_FadeMusicFromLevel(target_volume, internal_volume, ms); +} + // // MIDI Music //