Only load performance when changed

performance-menu
probonopd 2 months ago
parent 2f7c9bc99c
commit 0e413810f3
  1. 16
      src/uimenu.cpp

@ -1539,13 +1539,12 @@ void CUIMenu::TimerHandler (TKernelTimerHandle hTimer, void *pParam, void *pCont
assert(pThis);
if (pThis->m_hPerformanceLoadTimer == hTimer)
{
if (pThis->m_pMiniDexed->GetActualPerformanceID() != pThis->m_nSelectedPerformanceID)
{
pThis->m_pMiniDexed->SetNewPerformance(pThis->m_nSelectedPerformanceID);
pThis->m_hPerformanceLoadTimer = 0;
}
else
{
pThis->EventHandler (MenuEventBack);
pThis->m_hPerformanceLoadTimer = 0; // Detach the timer after execution
}
}
@ -1595,7 +1594,6 @@ void CUIMenu::PerformanceMenu (CUIMenu *pUIMenu, TMenuEvent Event)
--nValue;
}
} while ((pUIMenu->m_pMiniDexed->IsValidPerformance(nValue) != true) && (nValue != nStart));
pUIMenu->m_nSelectedPerformanceID = nValue;
break;
case MenuEventStepUp:
@ -1610,7 +1608,6 @@ void CUIMenu::PerformanceMenu (CUIMenu *pUIMenu, TMenuEvent Event)
++nValue;
}
} while ((pUIMenu->m_pMiniDexed->IsValidPerformance(nValue) != true) && (nValue != nStart));
pUIMenu->m_nSelectedPerformanceID = nValue;
break;
case MenuEventSelect:
@ -1628,13 +1625,18 @@ void CUIMenu::PerformanceMenu (CUIMenu *pUIMenu, TMenuEvent Event)
return;
}
// Restart the debounce timer
if (nValue != pUIMenu->m_nSelectedPerformanceID)
{
pUIMenu->m_nSelectedPerformanceID = nValue;
// Restart the debounce timer only if the selection has changed
if (pUIMenu->m_hPerformanceLoadTimer)
{
CTimer::Get()->CancelKernelTimer(pUIMenu->m_hPerformanceLoadTimer);
}
pUIMenu->m_hPerformanceLoadTimer = CTimer::Get()->StartKernelTimer(MSEC2HZ(500), TimerHandler, 0, pUIMenu);
}
}
else
{
switch (Event)

Loading…
Cancel
Save