fix(color): radio may crash if model yaml file does not contain any screen definitions (#6916)

This commit is contained in:
philmoz
2026-01-01 11:22:52 +10:00
committed by GitHub
parent 5f37969b27
commit e52a2e27c4
3 changed files with 9 additions and 0 deletions
+5
View File
@@ -197,6 +197,11 @@ void ModelData::cfsSetOffColorLuaOverride(uint8_t n, bool v) {
static TopBarPersistentData _topbarData;
static CustomScreenData* _screenData[MAX_CUSTOM_SCREENS];
bool ModelData::hasScreenData(int screenNum)
{
return _screenData[screenNum] != nullptr;
}
CustomScreenData* ModelData::getScreenData(int screenNum)
{
if (_screenData[screenNum] == nullptr) {
+1
View File
@@ -835,6 +835,7 @@ PACK(struct ModelData {
const char* getScreenLayoutId(int screenNum);
void setScreenLayoutId(int screenNum, const char* s);
TopBarPersistentData* getTopbarData();
bool hasScreenData(int screenNum);
CustomScreenData* getScreenData(int screenNum);
LayoutPersistentData* getScreenLayoutData(int screenNum);
WidgetPersistentData* getWidgetData(int screenNum, int zoneNum);
+3
View File
@@ -161,6 +161,9 @@ static void sanitizeMixerLines()
void postModelLoad(bool alarms)
{
#if defined(COLORLCD)
if (!g_model.hasScreenData(0))
LayoutFactory::loadDefaultLayout();
if (g_model.topbarWidgetWidth[0] == 0) {
// Set default width for top bar widgets
for (int i = 0; i < MAX_TOPBAR_ZONES; i += 1)