sysclk: fix temporary override governor bug

This commit is contained in:
souldbminersmwc
2025-12-23 21:41:52 -05:00
parent 114757d495
commit f7ee2bba02
2 changed files with 30 additions and 8 deletions

View File

@@ -117,6 +117,10 @@ void GlobalOverrideGui::addModuleToggleItem(SysClkModule module)
{
FatalGui::openWithResultCode("sysclkIpcSetProfiles", rc);
}
this->lastContextUpdate = armGetSystemTick();
this->context->overrideFreqs[module] = 0;
this->listHz[module] = 0;
});
// Add to list and track
this->listElement->addItem(toggle);
@@ -135,17 +139,35 @@ void GlobalOverrideGui::listUI()
void GlobalOverrideGui::refresh()
{
BaseMenuGui::refresh();
if(this->context)
if (!this->context)
return;
for (std::uint16_t m = 0; m < SysClkModule_EnumMax; m++)
{
for(std::uint16_t m = 0; m < SysClkModule_EnumMax; m++)
if (m == HorizonOCModule_Governor)
{
if(m > SysClkModule_MEM)
auto* toggle = static_cast<tsl::elm::ToggleListItem*>(this->listItems[m]);
if (!toggle)
continue;
if(this->listItems[m] != nullptr && this->listHz[m] != this->context->overrideFreqs[m])
bool newState = this->context->overrideFreqs[m] != 0;
if (toggle->getState() != newState)
{
this->listItems[m]->setValue(formatListFreqHz(this->context->overrideFreqs[m]));
this->listHz[m] = this->context->overrideFreqs[m];
toggle->setState(newState);
}
continue;
}
if (this->listItems[m] != nullptr &&
this->listHz[m] != this->context->overrideFreqs[m])
{
this->listItems[m]->setValue(
formatListFreqHz(this->context->overrideFreqs[m])
);
this->listHz[m] = this->context->overrideFreqs[m];
}
}
}
}

View File

@@ -36,7 +36,7 @@ class GlobalOverrideGui : public BaseMenuGui
protected:
tsl::elm::ListItem* listItems[SysClkModule_EnumMax];
std::uint32_t listHz[SysClkModule_EnumMax];
bool isGovernorEnabled;
void openFreqChoiceGui(SysClkModule module);
void addModuleListItem(SysClkModule module);
void addModuleToggleItem(SysClkModule module);