From: Marcel van der Veldt Date: Sun, 9 Feb 2025 00:52:02 +0000 (+0100) Subject: Fix: handle ungroup on power off group player X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=205951e814172202c9754a5cc4699151eb87444e;p=music-assistant-server.git Fix: handle ungroup on power off group player --- diff --git a/music_assistant/controllers/players.py b/music_assistant/controllers/players.py index 423a00db..7cda81c5 100644 --- a/music_assistant/controllers/players.py +++ b/music_assistant/controllers/players.py @@ -376,8 +376,8 @@ class PlayerController(CoreController): # ungroup player at power off player_was_synced = player.synced_to is not None - if not powered: - # this will handle both synced players and group players + if player.type == PlayerType.PLAYER and not powered: + # ungroup player if it is synced (or is a sync leader itself) # NOTE: ungroup will be ignored if the player is not grouped or synced await self.cmd_ungroup(player_id) diff --git a/music_assistant/providers/player_group/__init__.py b/music_assistant/providers/player_group/__init__.py index 60826122..3c1ee150 100644 --- a/music_assistant/providers/player_group/__init__.py +++ b/music_assistant/providers/player_group/__init__.py @@ -419,7 +419,6 @@ class PlayerGroupProvider(PlayerProvider): else: # handle TURN_OFF of the group player by turning off all members # optimistically set the group state to prevent race conditions - # with the ungroup command group_player.powered = False for member in self.mass.players.iter_group_members( group_player, only_powered=True, active_only=True @@ -427,6 +426,9 @@ class PlayerGroupProvider(PlayerProvider): # reset active group on player when the group is turned off member.active_group = None member.active_source = None + if member.synced_to: + # always ungroup first + await self.mass.players.cmd_ungroup(member.player_id) # handle TURN_OFF of the group player by turning off all members if member.powered and member.power_control != PLAYER_CONTROL_NONE: await self.mass.players.cmd_power(member.player_id, False)