From 203b76888d9d1496b0f8c7cace50d806c20bf014 Mon Sep 17 00:00:00 2001 From: Marcel van der Veldt Date: Fri, 18 Sep 2020 14:27:49 +0200 Subject: [PATCH] fix group player auto power off --- music_assistant/constants.py | 2 +- music_assistant/models/player_queue.py | 6 +++++- music_assistant/player_manager.py | 11 ++++++----- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/music_assistant/constants.py b/music_assistant/constants.py index 448f6f9d..31a1a8b3 100755 --- a/music_assistant/constants.py +++ b/music_assistant/constants.py @@ -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" diff --git a/music_assistant/models/player_queue.py b/music_assistant/models/player_queue.py index bf36b371..da642fd4 100755 --- a/music_assistant/models/player_queue.py +++ b/music_assistant/models/player_queue.py @@ -503,7 +503,11 @@ class PlayerQueue: 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 diff --git a/music_assistant/player_manager.py b/music_assistant/player_manager.py index dc5b8386..c1defb0c 100755 --- a/music_assistant/player_manager.py +++ b/music_assistant/player_manager.py @@ -419,7 +419,7 @@ class PlayerManager: 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: @@ -433,9 +433,8 @@ class PlayerManager: 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): """ @@ -561,8 +560,10 @@ class PlayerManager: 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: -- 2.34.1