Only init screen if one found

This commit is contained in:
Jonathan Bennett 2025-06-07 14:07:48 -05:00
parent 3955a5616e
commit 75e41c1604
2 changed files with 273 additions and 259 deletions

View File

@ -256,6 +256,7 @@ int32_t ButtonThread::runOnce()
#endif
if (btnEvent != BUTTON_EVENT_NONE) {
if (screen) {
#if HAS_SCREEN
switch (btnEvent) {
case BUTTON_EVENT_PRESSED: {
@ -312,7 +313,8 @@ int32_t ButtonThread::runOnce()
break;
}
btnEvent = BUTTON_EVENT_NONE;
#else
#endif
} else {
// On devices without screen: full legacy logic
switch (btnEvent) {
case BUTTON_EVENT_PRESSED: {
@ -541,7 +543,7 @@ int32_t ButtonThread::runOnce()
break;
}
btnEvent = BUTTON_EVENT_NONE;
#endif
}
}
return 50;

View File

@ -850,9 +850,21 @@ void setup()
// Initialize the screen first so we can show the logo while we start up everything else.
#if HAS_SCREEN
if (config.display.displaymode != meshtastic_Config_DisplayConfig_DisplayMode_COLOR) {
#if defined(ST7701_CS) || defined(ST7735_CS) || defined(USE_EINK) || defined(ILI9341_DRIVER) || defined(ILI9342_DRIVER) || \
defined(ST7789_CS) || defined(HX8357_CS) || defined(USE_ST7789) || defined(ILI9488_CS)
screen = new graphics::Screen(screen_found, screen_model, screen_geometry);
#elif defined(ARCH_PORTDUINO)
if ((screen_found.port != ScanI2C::I2CPort::NO_I2C || settingsMap[displayPanel]) &&
config.display.displaymode != meshtastic_Config_DisplayConfig_DisplayMode_COLOR) {
screen = new graphics::Screen(screen_found, screen_model, screen_geometry);
}
#else
if (screen_found.port != ScanI2C::I2CPort::NO_I2C)
screen = new graphics::Screen(screen_found, screen_model, screen_geometry);
#endif
}
#endif // HAS_SCREEN
// setup TZ prior to time actions.
#if !MESHTASTIC_EXCLUDE_TZ
LOG_DEBUG("Use compiled/slipstreamed %s", slipstreamTZString); // important, removing this clobbers our magic string