Fixed volume fixes (#1365)
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Fri, 14 Jun 2024 21:04:34 +0000 (23:04 +0200)
committerGitHub <noreply@github.com>
Fri, 14 Jun 2024 21:04:34 +0000 (23:04 +0200)
* Do not set volume_set feature when Sonos player had fixed volume

* Fix group volume when child player has fixed volume

music_assistant/server/controllers/players.py
music_assistant/server/providers/sonos/__init__.py

index ff02d1c5bdbf2648a77d5d0cfd520e319095763c..50ebb939df7dbe12e0a7cc7050862434b9250a63 100644 (file)
@@ -367,6 +367,8 @@ class PlayerController(CoreController):
         volume_dif = new_volume - cur_volume
         coros = []
         for child_player in self.iter_group_members(group_player, True):
+            if PlayerFeature.VOLUME_SET not in child_player.supported_features:
+                continue
             cur_child_volume = child_player.volume_level
             new_child_volume = int(cur_child_volume + volume_dif)
             new_child_volume = max(0, new_child_volume)
@@ -975,6 +977,8 @@ class PlayerController(CoreController):
         group_volume = 0
         active_players = 0
         for child_player in self.iter_group_members(player, True):
+            if PlayerFeature.VOLUME_SET not in child_player.supported_features:
+                continue
             group_volume += child_player.volume_level or 0
             active_players += 1
         if active_players:
index bdc60f98f59a0999954d5a22029927e5caf8971e..41628b56a6348a424e538fcc0381356fa7319c41 100644 (file)
@@ -526,6 +526,10 @@ class SonosPlayerProvider(PlayerProvider):
             soco=soco,
             mass_player=mass_player,
         )
+        if soco.fixed_volume:
+            mass_player.supported_features = tuple(
+                x for x in mass_player.supported_features if x != PlayerFeature.VOLUME_SET
+            )
         sonos_player.setup()
         self.mass.loop.call_soon_threadsafe(
             self.mass.players.register_or_update, sonos_player.mass_player