diff --git a/amplipi/app.py b/amplipi/app.py index 4b20a78be..642d722e4 100644 --- a/amplipi/app.py +++ b/amplipi/app.py @@ -339,6 +339,12 @@ def set_source(update: models.SourceUpdate, ctrl: Api = Depends(get_ctrl), sid: valid_update = update.copy() valid_update.input = f'stream={defaults.RCAs[sid]}' logging.warning(f'correcting deprecated use of RCA inputs from {update} to {valid_update}') + if update.input == 'None': + # Disconnect zones from inactive sources + zones = ctrl.get_state().zones + connected_zones = [zone.id for zone in zones["zones"] if zone.source_id == sid and zone.id is not None] # zone.id should never actually be none, but the linter worries about it + if connected_zones: + ctrl.set_zones(models.MultiZoneUpdate(zones=connected_zones, update=models.ZoneUpdate(source_id=-1))) return code_response(ctrl, ctrl.set_source(sid, update))