abort queue is http session ended
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Sat, 22 Jun 2019 13:05:19 +0000 (15:05 +0200)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Sat, 22 Jun 2019 13:05:19 +0000 (15:05 +0200)
music_assistant/modules/http_streamer.py
music_assistant/modules/playerproviders/chromecast.py

index a387d94e5bb6d37c62a0d57dbde5e026e2877829..fcb6ccbf9cca2b664f69f239992056bbb6520a9a 100755 (executable)
@@ -280,19 +280,20 @@ class HTTPStreamer():
                 while buffer.qsize() > 1 and not cancelled.is_set():
                     await asyncio.sleep(1)
             # end of the track reached
-            # WIP: update actual duration to the queue for more accurate now playing info
-            accurate_duration = bytes_written / int(sample_rate * 4 * 2)
-            queue_track.duration = accurate_duration
-            self.mass.player.providers[player.player_provider]._player_queue[player_id][queue_index] = queue_track
-            # move to next queue index
-            queue_index += 1
-            self.mass.event_loop.create_task(self.mass.player.player_queue_stream_update(player_id, queue_index, False))
-            LOGGER.info("Finished Streaming queue track: %s (%s) on player %s" % (track_id, queue_track.name, player.name))
-            # break out the loop if the http session is cancelled
             if cancelled.is_set():
+                # break out the loop if the http session is cancelled
                 break
+            else:
+                # WIP: update actual duration to the queue for more accurate now playing info
+                accurate_duration = bytes_written / int(sample_rate * 4 * 2)
+                queue_track.duration = accurate_duration
+                self.mass.player.providers[player.player_provider]._player_queue[player_id][queue_index] = queue_track
+                # move to next queue index
+                queue_index += 1
+                self.mass.event_loop.create_task(self.mass.player.player_queue_stream_update(player_id, queue_index, False))
+                LOGGER.info("Finished Streaming queue track: %s (%s) on player %s" % (track_id, queue_track.name, player.name))
         # end of queue reached, pass last fadeout bits to final output
-        if last_fadeout_data:
+        if last_fadeout_data and not cancelled.is_set():
             sox_proc.stdin.write(last_fadeout_data)
             await sox_proc.stdin.drain()
         sox_proc.stdin.close()
index 9e5ffc1c89834d0ff50ff696d5077aeeb109064a..d466fab6b012c08674c3be676f1f18ada88bfb09 100644 (file)
@@ -101,7 +101,10 @@ class ChromecastProvider(PlayerProvider):
             self._players[player_id].powered = True
             await self.mass.player.update_player(self._players[player_id])
         elif cmd == 'volume':
-            self._chromecasts[player_id].set_volume(try_parse_int(cmd_args)/100)
+            new_volume = try_parse_int(cmd_args)
+            self._chromecasts[player_id].set_volume(new_volume/100)
+            self._players[player_id].volume_level = new_volume
+            await self.mass.player.update_player(self._players[player_id])
         elif cmd == 'mute' and cmd_args == 'off':
             self._chromecasts[player_id].set_volume_muted(False)
         elif cmd == 'mute':