Resolve #510 by not stopping attempted playback/sequence when song duration is 0

This commit is contained in:
toaster 2023-04-08 12:39:02 +01:00
parent d432cf3837
commit a31d83cd6b

View file

@ -1635,35 +1635,39 @@ void S_SoundTestPlay(void)
S_ChangeMusicInternal(soundtest.current->name[soundtest.currenttrack],
!soundtest.current->basenoloop[soundtest.currenttrack]);
S_ShowMusicCredit();
soundtest.currenttime = 0;
soundtest.sequencemaxtime = S_GetMusicLength();
if (soundtest.sequencemaxtime == 0)
{
S_SoundTestStop(); // This sets soundtest.privilegedrequest to false
return;
}
S_ShowMusicCredit();
// ensure default is always set
soundtest.sequencefadeout = 0;
soundtest.dosequencefadeout = false;
if (soundtest.sequencemaxtime)
// Does song have default loop?
if (soundtest.current->basenoloop[soundtest.currenttrack] == false)
{
// Does song have default loop?
if (soundtest.current->basenoloop[soundtest.currenttrack] == false)
if (soundtest.sequencemaxtime < 3*60*1000)
{
if (soundtest.sequencemaxtime < 3*60*1000)
{
// I'd personally like songs in sequence to last between 3 and 6 minutes.
const UINT32 loopduration = (soundtest.sequencemaxtime - S_GetMusicLoopPoint());
soundtest.sequencemaxtime += loopduration;
}
// Only fade out if we're the last track for this song.
soundtest.dosequencefadeout = (soundtest.currenttrack == soundtest.current->numtracks-1);
// I'd personally like songs in sequence to last between 3 and 6 minutes.
const UINT32 loopduration = (soundtest.sequencemaxtime - S_GetMusicLoopPoint());
soundtest.sequencemaxtime += loopduration;
}
// ms to TICRATE conversion
soundtest.sequencemaxtime = (TICRATE*soundtest.sequencemaxtime)/1000;
// Only fade out if we're the last track for this song.
soundtest.dosequencefadeout = (soundtest.currenttrack == soundtest.current->numtracks-1);
}
// ms to TICRATE conversion
soundtest.sequencemaxtime = (TICRATE*soundtest.sequencemaxtime)/1000;
soundtest.privilegedrequest = false;
}