fix(screen): compile the MUI mirror out unless it is opted into

setMirror cleared muiOwner outside any guard, so every board without a
TFT failed to compile — the member only exists on the MUI path. The
assignment was redundant anyway: freeSnapshotLocked() releases the pool
and the ownership claim together.

The guards were also drawn on HAS_TFT while the code they protect needs
a device-ui carrying the flush observer, so a color build that never
opts in still carried the rect queue in .bss. Replaces the ad-hoc
HAS_SCREEN_MIRROR && defined(MESHTASTIC_MUI_MIRROR) pairs with a single
derived HAS_MUI_MIRROR next to HAS_SCREEN_MIRROR, and gates the queue,
the pool, the input seam and their declarations on it.

Verified on all three build shapes: t-deck-tft with the opt-in,
picomputer-s3 (TFT, opted out) and heltec-v3 (no TFT).
This commit is contained in:
James Rich committed 2026-11-03 07:39:18 -06:00
1 parent 418843f7b6
commit 2d384a9fa5
6 files changed
+29 -20

No files matched your search

+1 -1
View File
@@ -2186,7 +2186,7 @@ void AdminModule::handleSendInputEvent(const meshtastic_AdminMessage_InputEvent
// Wake the device if asleep
powerFSM.trigger(EVENT_INPUT);
#if HAS_SCREEN_MIRROR && defined(MESHTASTIC_MUI_MIRROR)
#if HAS_MUI_MIRROR
// MUI builds never construct an InputBroker (Modules.cpp skips it when
// displaymode is COLOR), so remote input reaches the LVGL UI directly.
if (graphics::muiInjectInputEvent(inputEvent.event_code, inputEvent.kb_char, inputEvent.touch_x, inputEvent.touch_y))