fix(preferences): retain MIDI device labels across dropdown refreshes

This commit is contained in:
Johannes Findeisen 2026-11-06 02:43:56 +01:00
commit 8795516124
4 changed files with 57 additions and 1 deletions

View file

@ -2264,6 +2264,15 @@ Provide device dropdowns and refresh in Preferences, persistent default input/ou
### Implementation status
Implemented: a MIDI preferences tab provides editable source/destination dropdowns, device refresh, input filtering, output channel defaults and optional thru. All choices use the strict shared configuration schema and ~/.xtc.conf. Play/Record restores selected routes; missing devices reject startup without losing choices. Settings roundtrip/invalid-value, GUI discovery/refresh/persistence/missing-device checks and the full GUI suite passed. MIDI help explains host bridge exposure, channel numbering and existing note/CC defaults.
Follow-up fix: MIDI dropdown labels now use dialog-owned backing strings because
FLTK copies menu items but borrows their labels. Menus are cleared before refresh
or string destruction. The regression test reproduces the previous heap
use-after-free under AddressSanitizer and verifies both lists, literal names with
slashes, selection/save, repeated refresh, offline selection retention and None.
`test-gui-midi-labels`, `test-gui-midi-workflows`, full `test-gui` and the focused
ASan/UBSan/leak check pass; the GUI application was rebuilt without warnings.
---
## Phase 103 — Export Selected Clips as Standard MIDI Files