Skip to content

Commit aa84552

Browse files
committed
Set m_iSpeed to default when groove is enabled
This fixes #379.
1 parent e1ba980 commit aa84552

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

Source/SoundGen.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1527,6 +1527,7 @@ void CSoundGen::ApplyGlobalState() // // //
15271527
int Row = IsPlaying() ? GetPlayerRow() : m_pTrackerView->GetSelectedRow();
15281528
if (stFullState *State = m_pDocument->RetrieveSoundState(GetPlayerTrack(), Frame, Row, -1)) {
15291529
ApplyGlobalTempoState(State);
1530+
SetupSpeed();
15301531
m_iLastHighlight = m_pDocument->GetHighlightAt(GetPlayerTrack(), Frame, Row).First;
15311532

15321533
for (int i = 0; i < m_pDocument->GetChannelCount(); i++) {
@@ -1558,7 +1559,6 @@ void CSoundGen::ApplyGlobalTempoState(stFullState *pState)
15581559
m_iSpeed = pState->Speed;
15591560
m_iGrooveIndex = -1;
15601561
}
1561-
SetupSpeed();
15621562
}
15631563

15641564
/*! \brief Obtains a human-readable form of a channel state object.
@@ -1874,6 +1874,9 @@ void CSoundGen::ResetTempo()
18741874
int Row = IsPlaying() ? GetPlayerRow() : m_pTrackerView->GetSelectedRow();
18751875
if (stFullState *State = m_pDocument->RetrieveSoundState(GetPlayerTrack(), Frame, Row, -1)) {
18761876
ApplyGlobalTempoState(State);
1877+
// Set m_iSpeed to avoid division by zero in SetupSpeed()
1878+
if (m_pDocument->GetSongGroove(m_iPlayTrack) && m_pDocument->GetGroove(m_iSpeed) == NULL)
1879+
m_iSpeed = DEFAULT_SPEED;
18771880
m_iLastHighlight = m_pDocument->GetHighlightAt(GetPlayerTrack(), Frame, Row).First;
18781881
delete State;
18791882
}
@@ -1891,8 +1894,8 @@ void CSoundGen::ResetTempo()
18911894
if (m_pDocument->GetSongGroove(m_iPlayTrack))
18921895
m_iSpeed = DEFAULT_SPEED;
18931896
}
1894-
SetupSpeed();
18951897
}
1898+
SetupSpeed();
18961899

18971900
m_bUpdateRow = false;
18981901
}

0 commit comments

Comments
 (0)