FX: Fix to avoid UI crashes for disabled Tone Generators

pull/795/head
Javier Nonis 1 week ago
parent d04b91a67f
commit 4bc87fd777
  1. 24
      src/minidexed.cpp
  2. 22
      src/uimenu.cpp

@ -724,8 +724,13 @@ void CMiniDexed::setInsertFXType (unsigned nType, unsigned nTG)
std::string CMiniDexed::getInsertFXName (unsigned nTG)
{
assert (nTG < CConfig::AllToneGenerators);
if (nTG < m_nToneGenerators)
{
assert (m_InsertFX[nTG]);
return m_InsertFX[nTG]->getName();
}
return "";
}
void CMiniDexed::setMidiFXType (unsigned nType, unsigned nTG)
{
@ -751,8 +756,13 @@ void CMiniDexed::setMidiFXType (unsigned nType, unsigned nTG)
std::string CMiniDexed::getMidiFXName (unsigned nTG)
{
assert (nTG < CConfig::AllToneGenerators);
if (nTG < m_nToneGenerators)
{
assert (m_MidiArp[nTG]);
return m_MidiArp[nTG]->getName();
}
return "";
}
void CMiniDexed::setSendFX1Type (unsigned nType)
{
@ -1336,8 +1346,18 @@ int CMiniDexed::GetTGParameter (TTGParameter Parameter, unsigned nTG)
case TGParameterMIDIChannel: return m_nMIDIChannel[nTG];
case TGParameterSendFX1: return m_nSendFX1[nTG];
case TGParameterReverbSend: return m_nSendFX2[nTG];
case TGParameterInsertFXType: return m_InsertFX[nTG]->getId();
case TGParameterMidiFXType: return m_MidiArp[nTG]->getId();
case TGParameterInsertFXType:
if (nTG < m_nToneGenerators)
{
return m_InsertFX[nTG]->getId();
}
return 0;
case TGParameterMidiFXType:
if (nTG < m_nToneGenerators)
{
return m_MidiArp[nTG]->getId();
}
return 0;
case TGParameterPitchBendRange: return m_nPitchBendRange[nTG];
case TGParameterPitchBendStep: return m_nPitchBendStep[nTG];
case TGParameterPortamentoMode: return m_nPortamentoMode[nTG];

@ -1030,6 +1030,9 @@ void CUIMenu::MenuHandlerMidiFX (CUIMenu *pUIMenu, TMenuEvent Event)
pUIMenu->m_pCurrentMenu = s_MidiFX;
}
// Identify TG
unsigned nTG = pUIMenu->m_nMenuStackParameter[pUIMenu->m_nCurrentMenuDepth-1];
switch (Event)
{
case MenuEventUpdate:
@ -1037,6 +1040,12 @@ void CUIMenu::MenuHandlerMidiFX (CUIMenu *pUIMenu, TMenuEvent Event)
case MenuEventSelect: // push menu
assert (pUIMenu->m_nCurrentMenuDepth < MaxMenuDepth);
// Check if TG is enabled
if (nTG >= pUIMenu->m_pConfig->GetToneGenerators()) {
break;
}
pUIMenu->m_MenuStackParent[pUIMenu->m_nCurrentMenuDepth] = pUIMenu->m_pParentMenu;
pUIMenu->m_MenuStackMenu[pUIMenu->m_nCurrentMenuDepth] = pUIMenu->m_pCurrentMenu;
pUIMenu->m_nMenuStackItem[pUIMenu->m_nCurrentMenuDepth]
@ -1082,8 +1091,6 @@ void CUIMenu::MenuHandlerMidiFX (CUIMenu *pUIMenu, TMenuEvent Event)
if (pUIMenu->m_pCurrentMenu) // if this is another menu?
{
// Identify TG
unsigned nTG = pUIMenu->m_nMenuStackParameter[pUIMenu->m_nCurrentMenuDepth-1];
// Create TG label
string TG ("TG");
TG += to_string (nTG+1);
@ -1117,6 +1124,9 @@ void CUIMenu::MenuHandlerInsertFX (CUIMenu *pUIMenu, TMenuEvent Event)
pUIMenu->m_pCurrentMenu = s_InsertFX;
}
// Identify TG
unsigned nTG = pUIMenu->m_nMenuStackParameter[pUIMenu->m_nCurrentMenuDepth-1];
switch (Event)
{
case MenuEventUpdate:
@ -1124,6 +1134,12 @@ void CUIMenu::MenuHandlerInsertFX (CUIMenu *pUIMenu, TMenuEvent Event)
case MenuEventSelect: // push menu
assert (pUIMenu->m_nCurrentMenuDepth < MaxMenuDepth);
// Check if TG is enabled
if (nTG >= pUIMenu->m_pConfig->GetToneGenerators()) {
break;
}
pUIMenu->m_MenuStackParent[pUIMenu->m_nCurrentMenuDepth] = pUIMenu->m_pParentMenu;
pUIMenu->m_MenuStackMenu[pUIMenu->m_nCurrentMenuDepth] = pUIMenu->m_pCurrentMenu;
pUIMenu->m_nMenuStackItem[pUIMenu->m_nCurrentMenuDepth]
@ -1169,8 +1185,6 @@ void CUIMenu::MenuHandlerInsertFX (CUIMenu *pUIMenu, TMenuEvent Event)
if (pUIMenu->m_pCurrentMenu) // if this is another menu?
{
// Identify TG
unsigned nTG = pUIMenu->m_nMenuStackParameter[pUIMenu->m_nCurrentMenuDepth-1];
// Create TG label
string TG ("TG");
TG += to_string (nTG+1);

Loading…
Cancel
Save