fix(eq): resolve base-speaker preset live instead of pinning a stale copy
_onDispositivoCambiado() bootstrapped a device-level preset entry for every never-seen device id, including the built-in speaker. That persistent level-3 entry masked later global-preset edits (level 3 beats level 4 on every resolution), so disconnecting a BT device or cold-starting without one could leave the EQ stuck on an outdated copy instead of the current global preset. The base speaker is now excluded from the first-seen bootstrap: disconnect and cold start always resolve through the live hierarchy. BT/wired/USB devices keep their bootstrap behavior unchanged.
This commit is contained in:
@@ -212,8 +212,13 @@ class EstadoEcualizador extends ChangeNotifier {
|
||||
|
||||
_dispositivoActualId = dispositivo.id;
|
||||
|
||||
// First-seen device: copy the current resolved preset as its starting point.
|
||||
if (!_presetsDispositivo.containsKey(dispositivo.id)) {
|
||||
// First-seen device: copy the current resolved preset as its starting
|
||||
// point. builtin_speaker is excluded: it must always fall through to
|
||||
// the hierarchy (L4 global) instead of being pinned by a forced L3
|
||||
// device-level copy, otherwise a later global-preset change would be
|
||||
// masked by this stale entry for the base device.
|
||||
final esBase = dispositivo.tipo == TipoDispositivo.altavozInterno;
|
||||
if (!esBase && !_presetsDispositivo.containsKey(dispositivo.id)) {
|
||||
final presetBase = _resolverPresetActivo();
|
||||
_presetsDispositivo[dispositivo.id] = presetBase;
|
||||
await servicio.guardarPresetDispositivo(dispositivo.id, presetBase);
|
||||
|
||||
Reference in New Issue
Block a user