Load performances after 500ms

performance-menu
probonopd 2 months ago
parent 7293c886dc
commit 5ea35d04cb
  1. 78
      src/uimenu.cpp
  2. 3
      src/uimenu.h

@ -353,7 +353,9 @@ CUIMenu::CUIMenu (CUserInterface *pUI, CMiniDexed *pMiniDexed, CConfig *pConfig)
m_nCurrentMenuItem (0),
m_nCurrentSelection (0),
m_nCurrentParameter (0),
m_nCurrentMenuDepth (0)
m_nCurrentMenuDepth (0),
m_hPerformanceLoadTimer (0),
m_nPendingPerformanceID (0)
{
assert (m_pConfig);
m_nToneGenerators = m_pConfig->GetToneGenerators();
@ -1536,7 +1538,15 @@ void CUIMenu::TimerHandler (TKernelTimerHandle hTimer, void *pParam, void *pCont
CUIMenu *pThis = static_cast<CUIMenu *> (pContext);
assert (pThis);
if (pThis->m_hPerformanceLoadTimer == hTimer)
{
pThis->m_pMiniDexed->SetNewPerformance(pThis->m_nPendingPerformanceID);
pThis->m_hPerformanceLoadTimer = 0;
}
else
{
pThis->EventHandler (MenuEventBack);
}
}
void CUIMenu::TimerHandlerNoBack (TKernelTimerHandle hTimer, void *pParam, void *pContext)
@ -1558,7 +1568,7 @@ void CUIMenu::PerformanceMenu (CUIMenu *pUIMenu, TMenuEvent Event)
if (Event == MenuEventUpdate)
{
pUIMenu->m_bPerformanceDeleteMode=false;
pUIMenu->m_bPerformanceDeleteMode = false;
}
if (pUIMenu->m_bSplashShow)
@ -1566,7 +1576,7 @@ void CUIMenu::PerformanceMenu (CUIMenu *pUIMenu, TMenuEvent Event)
return;
}
if(!pUIMenu->m_bPerformanceDeleteMode)
if (!pUIMenu->m_bPerformanceDeleteMode)
{
switch (Event)
{
@ -1578,7 +1588,6 @@ void CUIMenu::PerformanceMenu (CUIMenu *pUIMenu, TMenuEvent Event)
{
if (nValue == 0)
{
// Wrap around
nValue = nLastPerformance;
}
else if (nValue > 0)
@ -1586,8 +1595,12 @@ void CUIMenu::PerformanceMenu (CUIMenu *pUIMenu, TMenuEvent Event)
--nValue;
}
} while ((pUIMenu->m_pMiniDexed->IsValidPerformance(nValue) != true) && (nValue != nStart));
pUIMenu->m_nSelectedPerformanceID = nValue;
pUIMenu->m_pMiniDexed->SetNewPerformance(nValue); // Always load on scroll
pUIMenu->m_nPendingPerformanceID = nValue;
if (pUIMenu->m_hPerformanceLoadTimer)
{
CTimer::Get()->CancelKernelTimer(pUIMenu->m_hPerformanceLoadTimer);
}
pUIMenu->m_hPerformanceLoadTimer = CTimer::Get()->StartKernelTimer(MSEC2HZ(500), TimerHandler, 0, pUIMenu);
break;
case MenuEventStepUp:
@ -1595,7 +1608,6 @@ void CUIMenu::PerformanceMenu (CUIMenu *pUIMenu, TMenuEvent Event)
{
if (nValue == nLastPerformance)
{
// Wrap around
nValue = 0;
}
else if (nValue < nLastPerformance)
@ -1603,24 +1615,25 @@ void CUIMenu::PerformanceMenu (CUIMenu *pUIMenu, TMenuEvent Event)
++nValue;
}
} while ((pUIMenu->m_pMiniDexed->IsValidPerformance(nValue) != true) && (nValue != nStart));
pUIMenu->m_nSelectedPerformanceID = nValue;
pUIMenu->m_pMiniDexed->SetNewPerformance(nValue); // Always load on scroll
pUIMenu->m_nPendingPerformanceID = nValue;
if (pUIMenu->m_hPerformanceLoadTimer)
{
CTimer::Get()->CancelKernelTimer(pUIMenu->m_hPerformanceLoadTimer);
}
pUIMenu->m_hPerformanceLoadTimer = CTimer::Get()->StartKernelTimer(MSEC2HZ(500), TimerHandler, 0, pUIMenu);
break;
case MenuEventSelect:
switch (pUIMenu->m_nCurrentParameter)
if (pUIMenu->m_nCurrentParameter == 1)
{
case 1:
if (pUIMenu->m_pMiniDexed->IsValidPerformance(pUIMenu->m_nSelectedPerformanceID))
{
pUIMenu->m_bPerformanceDeleteMode=true;
pUIMenu->m_bConfirmDeletePerformance=false;
pUIMenu->m_bPerformanceDeleteMode = true;
pUIMenu->m_bConfirmDeletePerformance = false;
}
break;
default:
break;
}
break;
default:
return;
}
@ -1633,22 +1646,22 @@ void CUIMenu::PerformanceMenu (CUIMenu *pUIMenu, TMenuEvent Event)
break;
case MenuEventStepDown:
pUIMenu->m_bConfirmDeletePerformance=false;
pUIMenu->m_bConfirmDeletePerformance = false;
break;
case MenuEventStepUp:
pUIMenu->m_bConfirmDeletePerformance=true;
pUIMenu->m_bConfirmDeletePerformance = true;
break;
case MenuEventSelect:
pUIMenu->m_bPerformanceDeleteMode=false;
pUIMenu->m_bPerformanceDeleteMode = false;
if (pUIMenu->m_bConfirmDeletePerformance)
{
pUIMenu->m_nSelectedPerformanceID = 0;
pUIMenu->m_bConfirmDeletePerformance=false;
pUIMenu->m_pUI->DisplayWrite ("", "Delete", pUIMenu->m_pMiniDexed->DeletePerformance(nValue) ? "Completed" : "Error", false, false);
pUIMenu->m_bSplashShow=true;
CTimer::Get ()->StartKernelTimer (MSEC2HZ (1500), TimerHandlerNoBack, 0, pUIMenu);
pUIMenu->m_bConfirmDeletePerformance = false;
pUIMenu->m_pUI->DisplayWrite("", "Delete", pUIMenu->m_pMiniDexed->DeletePerformance(nValue) ? "Completed" : "Error", false, false);
pUIMenu->m_bSplashShow = true;
CTimer::Get()->StartKernelTimer(MSEC2HZ(1500), TimerHandlerNoBack, 0, pUIMenu);
return;
}
else
@ -1661,26 +1674,26 @@ void CUIMenu::PerformanceMenu (CUIMenu *pUIMenu, TMenuEvent Event)
}
}
if(!pUIMenu->m_bPerformanceDeleteMode)
if (!pUIMenu->m_bPerformanceDeleteMode)
{
Value = pUIMenu->m_pMiniDexed->GetPerformanceName(nValue);
unsigned nBankNum = pUIMenu->m_pMiniDexed->GetPerformanceBank();
std::string nPSelected = "000";
nPSelected += std::to_string(nBankNum+1); // Convert to user-facing bank number rather than index
nPSelected = nPSelected.substr(nPSelected.length()-3,3);
nPSelected += std::to_string(nBankNum + 1);
nPSelected = nPSelected.substr(nPSelected.length() - 3, 3);
std::string nPPerf = "000";
nPPerf += std::to_string(nValue+1); // Convert to user-facing performance number rather than index
nPPerf = nPPerf.substr(nPPerf.length()-3,3);
nPPerf += std::to_string(nValue + 1);
nPPerf = nPPerf.substr(nPPerf.length() - 3, 3);
nPSelected += ":"+nPPerf;
nPSelected += ":" + nPPerf;
pUIMenu->m_pUI->DisplayWrite (pUIMenu->m_pParentMenu[pUIMenu->m_nCurrentMenuItem].Name, nPSelected.c_str(),
Value.c_str (), true, true);
pUIMenu->m_pUI->DisplayWrite(pUIMenu->m_pParentMenu[pUIMenu->m_nCurrentMenuItem].Name, nPSelected.c_str(),
Value.c_str(), true, true);
}
else
{
pUIMenu->m_pUI->DisplayWrite ("", "Delete?", pUIMenu->m_bConfirmDeletePerformance ? "Yes" : "No", false, false);
pUIMenu->m_pUI->DisplayWrite("", "Delete?", pUIMenu->m_bConfirmDeletePerformance ? "Yes" : "No", false, false);
}
}
@ -1986,3 +1999,4 @@ void CUIMenu::EditTGParameterModulation (CUIMenu *pUIMenu, TMenuEvent Event)
nValue > rParam.Minimum, nValue < rParam.Maximum);
}
```

@ -180,6 +180,9 @@ private:
unsigned m_nSelectedPerformanceBankID =0;
bool m_bSplashShow=false;
unsigned m_nPendingPerformanceID = 0;
TKernelTimerHandle m_hPerformanceLoadTimer = 0;
};
#endif

Loading…
Cancel
Save