From 76464a53915b7b760dea3053afeed0df4edfa362 Mon Sep 17 00:00:00 2001 From: Marcel van der Veldt Date: Wed, 21 Aug 2024 18:32:46 +0200 Subject: [PATCH] fix resume after stop --- music_assistant/common/models/player_queue.py | 1 + music_assistant/server/controllers/player_queues.py | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/music_assistant/common/models/player_queue.py b/music_assistant/common/models/player_queue.py index 8f16281a..e2d6c881 100644 --- a/music_assistant/common/models/player_queue.py +++ b/music_assistant/common/models/player_queue.py @@ -37,6 +37,7 @@ class PlayerQueue(DataClassDictMixin): next_item: QueueItem | None = None radio_source: list[MediaItemType] = field(default_factory=list) flow_mode: bool = False + resume_pos: int = 0 # flow_mode_start_index: index of the first item of the flow stream flow_mode_start_index: int = 0 stream_finished: bool | None = None diff --git a/music_assistant/server/controllers/player_queues.py b/music_assistant/server/controllers/player_queues.py index 1949a0b5..af27ddb7 100644 --- a/music_assistant/server/controllers/player_queues.py +++ b/music_assistant/server/controllers/player_queues.py @@ -570,6 +570,7 @@ class PlayerQueuesController(CoreController): - queue_id: queue_id of the playerqueue to handle the command. """ if queue := self.get(queue_id): + queue.resume_pos = queue.corrected_elapsed_time queue.stream_finished = None queue.end_of_track_reached = None # forward the actual command to the player controller @@ -598,6 +599,8 @@ class PlayerQueuesController(CoreController): - queue_id: queue_id of the playerqueue to handle the command. """ + if queue := self._queues.get(queue_id): + queue.resume_pos = queue.corrected_elapsed_time # forward the actual command to the player controller await self.mass.players.cmd_pause(queue_id) @@ -692,7 +695,7 @@ class PlayerQueuesController(CoreController): queue = self._queues[queue_id] queue_items = self._queue_items[queue_id] resume_item = queue.current_item - resume_pos = queue.elapsed_time + resume_pos = queue.resume_pos if not resume_item and queue.current_index is not None and len(queue_items) > 0: resume_item = self.get_item(queue_id, queue.current_index) @@ -723,6 +726,7 @@ class PlayerQueuesController(CoreController): ) -> None: """Play item at index (or item_id) X in queue.""" queue = self._queues[queue_id] + queue.resume_pos = 0 if isinstance(index, str): index = self.index_by_id(queue_id, index) queue_item = self.get_item(queue_id, index) -- 2.34.1