Skip to content

Commit

Permalink
fix group player auto power off
Browse files Browse the repository at this point in the history
  • Loading branch information
marcelveldt committed Sep 18, 2020
1 parent fb6cded commit 203b768
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 7 deletions.
2 changes: 1 addition & 1 deletion music_assistant/constants.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""All constants for Music Assistant."""

__version__ = "0.0.33"
__version__ = "0.0.34"
REQUIRED_PYTHON_VER = "3.7"

CONF_USERNAME = "username"
Expand Down
6 changes: 5 additions & 1 deletion music_assistant/models/player_queue.py
Original file line number Diff line number Diff line change
Expand Up @@ -503,7 +503,11 @@ async def async_update_state(self):
self._next_queue_startindex = self.next_index
self._cur_index = new_index
# check if a new track is loaded, wait for the streamdetails
if self._last_item != self.cur_item and self.cur_item.streamdetails:
if (
self.cur_item
and self._last_item != self.cur_item
and self.cur_item.streamdetails
):
# new active item in queue
self.mass.signal_event(EVENT_QUEUE_UPDATED, self.to_dict())
# invalidate previous streamdetails
Expand Down
11 changes: 6 additions & 5 deletions music_assistant/player_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -419,7 +419,7 @@ async def async_cmd_power_off(self, player_id: str) -> None:
for child_player_id in player.group_childs:
child_player = self.get_player(child_player_id)
if child_player and child_player.powered:
await self.async_cmd_power_off(child_player_id)
self.mass.add_job(self.async_cmd_power_off(child_player_id))
else:
# if this was the last powered player in the group, turn off group
for parent_player_id in player.group_parents:
Expand All @@ -433,9 +433,8 @@ async def async_cmd_power_off(self, player_id: str) -> None:
child_player = self.get_player(child_player_id)
if child_player and child_player.powered:
has_powered_players = True
break
if not has_powered_players:
await self.async_cmd_power_off(parent_player_id)
self.mass.add_job(self.async_cmd_power_off(parent_player_id))

async def async_cmd_power_toggle(self, player_id: str):
"""
Expand Down Expand Up @@ -561,8 +560,10 @@ async def __async_create_player_state(self, player: Player):
player_state = Player(player.player_id, player.provider_id)
self._players[player.player_id] = player_state
setattr(player_state, "_on_update", self.__player_updated)
group_parents = self.__get_player_group_parents(player)
active_queue = self.__get_player_active_queue(player, group_parents)
player_state.group_parents = self.__get_player_group_parents(player)
active_queue = self.__get_player_active_queue(
player, player_state.group_parents
)
player_state.name = self.__get_player_name(player)
player_state.powered = self.__get_player_power_state(player)
if active_queue != player.player_id:
Expand Down

0 comments on commit 203b768

Please sign in to comment.