Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 18 additions & 5 deletions homeassistant/components/media_player/cast.py
Original file line number Diff line number Diff line change
Expand Up @@ -368,7 +368,8 @@ async def async_set_cast_info(self, cast_info):

if self._chromecast is not None:
if old_cast_info.host_port == cast_info.host_port:
# Nothing connection-related updated
_LOGGER.debug("No connection related update: %s",
cast_info.host_port)
return
await self._async_disconnect()

Expand Down Expand Up @@ -402,7 +403,12 @@ async def _async_disconnect(self):

await self.hass.async_add_job(self._chromecast.disconnect)

# Invalidate some attributes
self._invalidate()

self.async_schedule_update_ha_state()

def _invalidate(self):
"""Invalidate some attributes."""
self._chromecast = None
self.cast_status = None
self.media_status = None
Expand All @@ -411,8 +417,6 @@ async def _async_disconnect(self):
self._status_listener.invalidate()
self._status_listener = None

self.async_schedule_update_ha_state()

# ========== Callbacks ==========
def new_cast_status(self, cast_status):
"""Handle updates of the cast status."""
Expand All @@ -427,7 +431,16 @@ def new_media_status(self, media_status):

def new_connection_status(self, connection_status):
"""Handle updates of connection status."""
from pychromecast.socket_client import CONNECTION_STATUS_CONNECTED
from pychromecast.socket_client import CONNECTION_STATUS_CONNECTED, \
CONNECTION_STATUS_DISCONNECTED

_LOGGER.debug("Received cast device connection status: %s",
connection_status.status)
if connection_status.status == CONNECTION_STATUS_DISCONNECTED:
self._available = False
self._invalidate()
self.schedule_update_ha_state()
return

new_available = connection_status.status == CONNECTION_STATUS_CONNECTED
if new_available != self._available:
Expand Down