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); FatalGui::openWithResultCode("sysclkIpcSetProfiles", rc);
} }
this->lastContextUpdate = armGetSystemTick();
this->context->overrideFreqs[module] = 0;
this->listHz[module] = 0;
}); });
// Add to list and track // Add to list and track
this->listElement->addItem(toggle); this->listElement->addItem(toggle);
@@ -135,17 +139,35 @@ void GlobalOverrideGui::listUI()
void GlobalOverrideGui::refresh() void GlobalOverrideGui::refresh()
{ {
BaseMenuGui::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; 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])); toggle->setState(newState);
this->listHz[m] = this->context->overrideFreqs[m];
} }
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: protected:
tsl::elm::ListItem* listItems[SysClkModule_EnumMax]; tsl::elm::ListItem* listItems[SysClkModule_EnumMax];
std::uint32_t listHz[SysClkModule_EnumMax]; std::uint32_t listHz[SysClkModule_EnumMax];
bool isGovernorEnabled;
void openFreqChoiceGui(SysClkModule module); void openFreqChoiceGui(SysClkModule module);
void addModuleListItem(SysClkModule module); void addModuleListItem(SysClkModule module);
void addModuleToggleItem(SysClkModule module); void addModuleToggleItem(SysClkModule module);