Fix HEOS source switching back to Local Music after starting stream (#3206)
authorTom Matheussen <13683094+Tommatheussen@users.noreply.github.com>
Sat, 21 Feb 2026 11:04:03 +0000 (12:04 +0100)
committerGitHub <noreply@github.com>
Sat, 21 Feb 2026 11:04:03 +0000 (12:04 +0100)
music_assistant/providers/heos/player.py

index b6f7163b00b9f066f6ac99ed72b105876e385894..abca4c10131b7e1a23615854c8f793f25286fc74 100644 (file)
@@ -64,7 +64,7 @@ class HeosPlayer(Player):
     async def setup(self) -> None:
         """Set up the player."""
         self.set_device_info()
-        self.set_dynamic_attributes()
+        self.set_dynamic_attributes(update_media=True)
 
         await self.mass.players.register_or_update(self)
 
@@ -144,6 +144,12 @@ class HeosPlayer(Player):
             case const.EVENT_PLAYER_VOLUME_CHANGED:
                 self._update_player_volume()
 
+            case const.EVENT_PLAYER_PLAYBACK_ERROR:
+                self.logger.error(
+                    "[%s] Playback error: %s", self._device.name, self._device.playback_error
+                )
+                self.set_dynamic_attributes()
+
             case _:
                 # Update everything on other events
                 self.set_dynamic_attributes()
@@ -215,11 +221,14 @@ class HeosPlayer(Player):
             else None
         )
 
-    def set_dynamic_attributes(self) -> None:
+    def set_dynamic_attributes(self, update_media: bool = False) -> None:
         """Update all player dynamic attributes."""
         self._update_player_volume()
         self._update_player_state()
-        self._update_player_current_media()
+
+        if update_media:
+            self._update_player_current_media()
+
         self._update_player_playing_progress()
 
     async def volume_set(self, volume_level: int) -> None: