mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-27 14:22:13 +00:00
- Fixed: Selecting TiMidity++ as a MIDI device without a working timidity.exe, then switching to a different MIDI device would leave music silent until a new song was started.
(The discrepancy between mus_playing.handle and currSong is one which should probably be handled properly at some point.) SVN r3212 (trunk)
This commit is contained in:
parent
2de3937338
commit
1579fd1c1c
3 changed files with 29 additions and 5 deletions
|
@ -2517,6 +2517,21 @@ void S_RestartMusic ()
|
|||
}
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
// S_MIDIDeviceChanged
|
||||
//
|
||||
//==========================================================================
|
||||
|
||||
void S_MIDIDeviceChanged()
|
||||
{
|
||||
if (mus_playing.handle != NULL && mus_playing.handle->IsMIDI())
|
||||
{
|
||||
mus_playing.handle->Stop();
|
||||
mus_playing.handle->Start(mus_playing.loop, -1, mus_playing.baseorder);
|
||||
}
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
// S_GetMusic
|
||||
|
|
|
@ -313,6 +313,8 @@ bool S_ChangeCDMusic (int track, unsigned int id=0, bool looping=true);
|
|||
|
||||
void S_RestartMusic ();
|
||||
|
||||
void S_MIDIDeviceChanged();
|
||||
|
||||
int S_GetMusic (char **name);
|
||||
|
||||
// Stops the music for sure.
|
||||
|
|
|
@ -43,13 +43,20 @@ static void MIDIDeviceChanged(int newdev)
|
|||
static int oldmididev = INT_MIN;
|
||||
|
||||
// If a song is playing, move it to the new device.
|
||||
if (oldmididev != newdev && currSong != NULL && currSong->IsMIDI())
|
||||
if (oldmididev != newdev)
|
||||
{
|
||||
MusInfo *song = currSong;
|
||||
if (song->m_Status == MusInfo::STATE_Playing)
|
||||
if (currSong != NULL && currSong->IsMIDI())
|
||||
{
|
||||
song->Stop();
|
||||
song->Start(song->m_Looping);
|
||||
MusInfo *song = currSong;
|
||||
if (song->m_Status == MusInfo::STATE_Playing)
|
||||
{
|
||||
song->Stop();
|
||||
song->Start(song->m_Looping);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
S_MIDIDeviceChanged();
|
||||
}
|
||||
}
|
||||
oldmididev = newdev;
|
||||
|
|
Loading…
Reference in a new issue