avoiding deadlock situation
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Sun, 26 May 2019 20:21:57 +0000 (22:21 +0200)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Sun, 26 May 2019 20:21:57 +0000 (22:21 +0200)
music_assistant/modules/player.py
music_assistant/modules/playerproviders/chromecast.py

index 02f3d8a2f3cb14a06edebf3683ce722f5858f5d8..330eebe64fc02ae544c41417d688808a6174d8f4 100755 (executable)
@@ -123,11 +123,7 @@ class Player():
             group_player = self._players[player.group_parent]
             if group_player.settings['apply_group_power']:
                 player_childs = [item for item in self._players.values() if item.group_parent == group_player.player_id]
-                if not group_player.powered and cmd == 'power' and cmd_args == 'on':
-                    # power on group player
-                    self.mass.event_loop.create_task(
-                            self.player_command(group_player.player_id, 'power', 'on'))
-                elif group_player.powered and cmd == 'power' and cmd_args == 'off':
+                if group_player.powered and cmd == 'power' and cmd_args == 'off':
                     # check if the group player should still be turned on
                     new_powered = False
                     for child_player in player_childs:
@@ -135,8 +131,7 @@ class Player():
                             new_powered = True
                             break
                     if not new_powered:
-                        self.mass.event_loop.create_task(
-                                self.player_command(group_player.player_id, 'power', 'off'))
+                        await self.player_command(group_player.player_id, 'power', 'off')
     
     async def remove_player(self, player_id):
         ''' handle a player remove '''
index 96a4110ab284a69d862d0db1a3414f606e098e8e..5259f53dfb928455b57b223fe150f12f11ad637a 100644 (file)
@@ -62,7 +62,7 @@ class ChromecastProvider(PlayerProvider):
         ''' issue command on player (play, pause, next, previous, stop, power, volume, mute) '''
         count = 0
         while self._chromecasts[player_id].is_busy and count < 10:
-            asyncio.sleep(0.1)
+            await asyncio.sleep(0.1)
             count += 1
         self._chromecasts[player_id].is_busy = True
         if cmd == 'play':
@@ -108,7 +108,7 @@ class ChromecastProvider(PlayerProvider):
         '''
         count = 0
         while self._chromecasts[player_id].is_busy and count < 10:
-            asyncio.sleep(0.1)
+            await asyncio.sleep(0.1)
             count += 1
         self._chromecasts[player_id].is_busy = True
         castplayer = self._chromecasts[player_id]