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
@@ -1394,7 +1394,7 @@ extern meshtastic_DeviceMetadata getDeviceMetadata()
deviceMetadata.has_xeddsa = true;
#endif
#if HAS_TFT && HAS_SCREEN_MIRROR && defined(MESHTASTIC_MUI_MIRROR)
#if HAS_MUI_MIRROR
// MUI owns the panel and leaves `screen` null, so ask LVGL instead.
uint16_t muiW = 0, muiH = 0;
bool muiTouch = false;