do not poll player when not needed
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Sat, 2 Jul 2022 21:34:23 +0000 (23:34 +0200)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Sat, 2 Jul 2022 21:34:23 +0000 (23:34 +0200)
music_assistant/controllers/players.py
music_assistant/models/player_queue.py

index 2ac4b3719666b810e0e62e140a607bce35f92ef5..b7e6f3441e639a5918eea6e6ca4d7275371fa5dc 100755 (executable)
@@ -96,9 +96,15 @@ class PlayerController:
         cur_tick = 0
         while True:
             for player in self.players:
-                if cur_tick == interval or player.state in (
-                    PlayerState.PLAYING,
-                    PlayerState.PAUSED,
+                if not player.available:
+                    continue
+                if cur_tick == interval or (
+                    player.active_queue.active
+                    and player.state
+                    in (
+                        PlayerState.PLAYING,
+                        PlayerState.PAUSED,
+                    )
                 ):
                     player.update_state()
             if cur_tick == interval:
index 800b6facf474bdeb10def24f6d841cf4ba74c8f3..c8b21051c4a85863f06498197468e31b4055356c 100644 (file)
@@ -105,10 +105,12 @@ class PlayerQueue:
 
     @property
     def active(self) -> bool:
-        """Return bool if the queue is currenty active on the player."""
-        if not self.player.current_url:
-            return False
+        """Return if the queue is currenty active."""
         if stream := self.stream:
+            if not self.stream.done.is_set():
+                return True
+            if not self.player.current_url:
+                return False
             return stream.stream_id in self.player.current_url
         return False