From: Marcel van der Veldt Date: Tue, 25 Feb 2025 12:02:20 +0000 (+0100) Subject: Enhancement: use a class var to register transitioning players X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=64b1e310eed360137c75fc0d9acd982f796c827e;p=music-assistant-server.git Enhancement: use a class var to register transitioning players --- diff --git a/music_assistant/controllers/player_queues.py b/music_assistant/controllers/player_queues.py index 2a55943e..af1e3712 100644 --- a/music_assistant/controllers/player_queues.py +++ b/music_assistant/controllers/player_queues.py @@ -123,6 +123,7 @@ class PlayerQueuesController(CoreController): self._queues: dict[str, PlayerQueue] = {} self._queue_items: dict[str, list[QueueItem]] = {} self._prev_states: dict[str, CompareState] = {} + self._transitioning_players: set[str] = set() self.manifest.name = "Player Queues controller" self.manifest.description = ( "Music Assistant's core controller which manages the queues for all players." @@ -802,10 +803,10 @@ class PlayerQueuesController(CoreController): media=await self.player_media_from_queue_item(queue_item, queue.flow_mode), ) await asyncio.sleep(2) - setattr(queue, "transitioning", False) # noqa: B010 + self._transitioning_players.discard(queue_id) # we set a flag to notify the update logic that we're transitioning to a new track - setattr(queue, "transitioning", True) # noqa: B010 + self._transitioning_players.add(queue_id) self.mass.call_later( 1.5 if debounce else 0.1, play_media, @@ -923,10 +924,11 @@ class PlayerQueuesController(CoreController): queue.state = PlayerState.IDLE # return early if the queue is not active and we have no previous state return - if getattr(queue, "transitioning", False): + if queue.queue_id in self._transitioning_players: # we're currently transitioning to a new track, # ignore updates from the player during this time return + # queue is active and preflight checks passed, update the queue details self._update_queue_from_player(player)