From: Marcel van der Veldt Date: Wed, 5 Feb 2025 23:40:30 +0000 (+0100) Subject: Chore: try to workaround strange airplay volume pingpong X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=95ea65f68ca3f4d4328940e551c30627c6ad5742;p=music-assistant-server.git Chore: try to workaround strange airplay volume pingpong --- diff --git a/music_assistant/providers/airplay/provider.py b/music_assistant/providers/airplay/provider.py index 52b12403..f952dabf 100644 --- a/music_assistant/providers/airplay/provider.py +++ b/music_assistant/providers/airplay/provider.py @@ -588,10 +588,10 @@ class AirplayProvider(PlayerProvider): # to prevent an endless pingpong of volume changes raop_volume = float(path.split("dmcp.device-volume=", 1)[-1]) volume = convert_airplay_volume(raop_volume) - assert mass_player.volume_level + assert mass_player.volume_level is not None if ( - abs(mass_player.volume_level - volume) > 5 - or (time.time() - airplay_player.last_command_sent) < 2 + abs(mass_player.volume_level - volume) > 3 + or (time.time() - airplay_player.last_command_sent) > 3 ): self.mass.create_task(self.cmd_volume_set(player_id, volume)) else: @@ -600,10 +600,12 @@ class AirplayProvider(PlayerProvider): elif "dmcp.volume=" in path: # volume change request from device (e.g. volume buttons) volume = int(path.split("dmcp.volume=", 1)[-1]) - if volume != mass_player.volume_level: + assert mass_player.volume_level is not None + if ( + abs(mass_player.volume_level - volume) > 2 + or (time.time() - airplay_player.last_command_sent) > 3 + ): self.mass.create_task(self.cmd_volume_set(player_id, volume)) - # optimistically set the new volume to prevent bouncing around - mass_player.volume_level = volume elif "device-prevent-playback=1" in path: # device switched to another source (or is powered off) if raop_stream := airplay_player.raop_stream: