Skip to content

Commit cbd439f

Browse files
committed
Fix issue with clearing output protocol during track changes
1 parent 7bb2457 commit cbd439f

2 files changed

Lines changed: 7 additions & 27 deletions

File tree

music_assistant/controllers/players/protocol_linking.py

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1450,30 +1450,3 @@ async def _forward_protocol_set_members(
14501450
parent_protocol_player.group_members,
14511451
parent_protocol_player.synced_to,
14521452
)
1453-
1454-
# Clear active protocol if all protocol members were removed
1455-
if (
1456-
filtered_protocol_remove
1457-
and not filtered_protocol_add
1458-
and parent_protocol_player.player_id == parent_player.active_output_protocol
1459-
):
1460-
# Check group_members count to see if we should clear
1461-
members_count = len(parent_protocol_player.group_members)
1462-
self.logger.debug(
1463-
"Checking if should clear active protocol on %s: "
1464-
"protocol_members_count=%s, removing=%s",
1465-
parent_player.state.name,
1466-
members_count,
1467-
filtered_protocol_remove,
1468-
)
1469-
if members_count <= 1 and parent_player.state.playback_state == PlaybackState.IDLE:
1470-
parent_player.set_active_output_protocol(None)
1471-
1472-
# Clear active output protocol on removed child players
1473-
if filtered_protocol_remove:
1474-
for child_protocol_id in filtered_protocol_remove:
1475-
if child_protocol := self.get_player(child_protocol_id):
1476-
if child_protocol.protocol_parent_id:
1477-
if child_player := self.get_player(child_protocol.protocol_parent_id):
1478-
if child_player.active_output_protocol == child_protocol_id:
1479-
child_player.set_active_output_protocol(None)

music_assistant/models/player.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1010,6 +1010,7 @@ def set_active_output_protocol(self, protocol_id: str | None) -> None:
10101010
:param protocol_id: The protocol player_id to set as active, "native" for native playback,
10111011
or None to clear the active protocol.
10121012
"""
1013+
self.mass.cancel_timer(f"set_output_protocol_{self.player_id}")
10131014
if self.__attr_active_output_protocol == protocol_id:
10141015
return # No change
10151016
if protocol_id == self.player_id:
@@ -1347,6 +1348,12 @@ def __calculate_player_state(
13471348
self.mass.call_later(
13481349
2, self.set_active_mass_source, None, task_id=f"set_mass_source_{self.player_id}"
13491350
)
1351+
self.mass.call_later(
1352+
2,
1353+
self.set_active_output_protocol,
1354+
None,
1355+
task_id=f"set_output_protocol_{self.player_id}",
1356+
)
13501357

13511358
return get_changed_dataclass_values(
13521359
prev_state,

0 commit comments

Comments
 (0)