Only load performance when changed

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

@ -1533,19 +1533,18 @@ void CUIMenu::TGUpDownHandler (TMenuEvent Event)
EventHandler (MenuEventUpdate); EventHandler (MenuEventUpdate);
} }
void CUIMenu::TimerHandler (TKernelTimerHandle hTimer, void *pParam, void *pContext) void CUIMenu::TimerHandler(TKernelTimerHandle hTimer, void *pParam, void *pContext)
{ {
CUIMenu *pThis = static_cast<CUIMenu *> (pContext); CUIMenu *pThis = static_cast<CUIMenu *>(pContext);
assert (pThis); assert(pThis);
if (pThis->m_hPerformanceLoadTimer == hTimer) if (pThis->m_hPerformanceLoadTimer == hTimer)
{ {
pThis->m_pMiniDexed->SetNewPerformance(pThis->m_nSelectedPerformanceID); if (pThis->m_pMiniDexed->GetActualPerformanceID() != pThis->m_nSelectedPerformanceID)
pThis->m_hPerformanceLoadTimer = 0; {
} pThis->m_pMiniDexed->SetNewPerformance(pThis->m_nSelectedPerformanceID);
else }
{ pThis->m_hPerformanceLoadTimer = 0; // Detach the timer after execution
pThis->EventHandler (MenuEventBack);
} }
} }
@ -1595,7 +1594,6 @@ void CUIMenu::PerformanceMenu (CUIMenu *pUIMenu, TMenuEvent Event)
--nValue; --nValue;
} }
} while ((pUIMenu->m_pMiniDexed->IsValidPerformance(nValue) != true) && (nValue != nStart)); } while ((pUIMenu->m_pMiniDexed->IsValidPerformance(nValue) != true) && (nValue != nStart));
pUIMenu->m_nSelectedPerformanceID = nValue;
break; break;
case MenuEventStepUp: case MenuEventStepUp:
@ -1610,7 +1608,6 @@ void CUIMenu::PerformanceMenu (CUIMenu *pUIMenu, TMenuEvent Event)
++nValue; ++nValue;
} }
} while ((pUIMenu->m_pMiniDexed->IsValidPerformance(nValue) != true) && (nValue != nStart)); } while ((pUIMenu->m_pMiniDexed->IsValidPerformance(nValue) != true) && (nValue != nStart));
pUIMenu->m_nSelectedPerformanceID = nValue;
break; break;
case MenuEventSelect: case MenuEventSelect:
@ -1628,12 +1625,17 @@ void CUIMenu::PerformanceMenu (CUIMenu *pUIMenu, TMenuEvent Event)
return; return;
} }
// Restart the debounce timer if (nValue != pUIMenu->m_nSelectedPerformanceID)
if (pUIMenu->m_hPerformanceLoadTimer)
{ {
CTimer::Get()->CancelKernelTimer(pUIMenu->m_hPerformanceLoadTimer); 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);
} }
pUIMenu->m_hPerformanceLoadTimer = CTimer::Get()->StartKernelTimer(MSEC2HZ(500), TimerHandler, 0, pUIMenu);
} }
else else
{ {

Loading…
Cancel
Save