Skip to content

Commit 203b768

Browse files
committed
fix group player auto power off
1 parent fb6cded commit 203b768

File tree

3 files changed

+12
-7
lines changed

3 files changed

+12
-7
lines changed

music_assistant/constants.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"""All constants for Music Assistant."""
22

3-
__version__ = "0.0.33"
3+
__version__ = "0.0.34"
44
REQUIRED_PYTHON_VER = "3.7"
55

66
CONF_USERNAME = "username"

music_assistant/models/player_queue.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -503,7 +503,11 @@ async def async_update_state(self):
503503
self._next_queue_startindex = self.next_index
504504
self._cur_index = new_index
505505
# check if a new track is loaded, wait for the streamdetails
506-
if self._last_item != self.cur_item and self.cur_item.streamdetails:
506+
if (
507+
self.cur_item
508+
and self._last_item != self.cur_item
509+
and self.cur_item.streamdetails
510+
):
507511
# new active item in queue
508512
self.mass.signal_event(EVENT_QUEUE_UPDATED, self.to_dict())
509513
# invalidate previous streamdetails

music_assistant/player_manager.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -419,7 +419,7 @@ async def async_cmd_power_off(self, player_id: str) -> None:
419419
for child_player_id in player.group_childs:
420420
child_player = self.get_player(child_player_id)
421421
if child_player and child_player.powered:
422-
await self.async_cmd_power_off(child_player_id)
422+
self.mass.add_job(self.async_cmd_power_off(child_player_id))
423423
else:
424424
# if this was the last powered player in the group, turn off group
425425
for parent_player_id in player.group_parents:
@@ -433,9 +433,8 @@ async def async_cmd_power_off(self, player_id: str) -> None:
433433
child_player = self.get_player(child_player_id)
434434
if child_player and child_player.powered:
435435
has_powered_players = True
436-
break
437436
if not has_powered_players:
438-
await self.async_cmd_power_off(parent_player_id)
437+
self.mass.add_job(self.async_cmd_power_off(parent_player_id))
439438

440439
async def async_cmd_power_toggle(self, player_id: str):
441440
"""
@@ -561,8 +560,10 @@ async def __async_create_player_state(self, player: Player):
561560
player_state = Player(player.player_id, player.provider_id)
562561
self._players[player.player_id] = player_state
563562
setattr(player_state, "_on_update", self.__player_updated)
564-
group_parents = self.__get_player_group_parents(player)
565-
active_queue = self.__get_player_active_queue(player, group_parents)
563+
player_state.group_parents = self.__get_player_group_parents(player)
564+
active_queue = self.__get_player_active_queue(
565+
player, player_state.group_parents
566+
)
566567
player_state.name = self.__get_player_name(player)
567568
player_state.powered = self.__get_player_power_state(player)
568569
if active_queue != player.player_id:

0 commit comments

Comments
 (0)