mirror of
https://github.com/home-assistant/core.git
synced 2025-07-28 07:37:34 +00:00
Cleanup sonos shutdown process (#113654)
This commit is contained in:
parent
26c1b7e72e
commit
885abe2fda
@ -35,6 +35,7 @@ from homeassistant.helpers import (
|
|||||||
from homeassistant.helpers.dispatcher import async_dispatcher_send
|
from homeassistant.helpers.dispatcher import async_dispatcher_send
|
||||||
from homeassistant.helpers.event import async_call_later, async_track_time_interval
|
from homeassistant.helpers.event import async_call_later, async_track_time_interval
|
||||||
from homeassistant.helpers.typing import ConfigType
|
from homeassistant.helpers.typing import ConfigType
|
||||||
|
from homeassistant.util.async_ import create_eager_task
|
||||||
|
|
||||||
from .alarms import SonosAlarms
|
from .alarms import SonosAlarms
|
||||||
from .const import (
|
from .const import (
|
||||||
@ -320,11 +321,15 @@ class SonosDiscoveryManager:
|
|||||||
zgs.total_requests,
|
zgs.total_requests,
|
||||||
)
|
)
|
||||||
await asyncio.gather(
|
await asyncio.gather(
|
||||||
*(speaker.async_offline() for speaker in self.data.discovered.values())
|
*(
|
||||||
|
create_eager_task(speaker.async_offline())
|
||||||
|
for speaker in self.data.discovered.values()
|
||||||
|
)
|
||||||
)
|
)
|
||||||
if events_asyncio.event_listener:
|
if events_asyncio.event_listener:
|
||||||
await events_asyncio.event_listener.async_stop()
|
await events_asyncio.event_listener.async_stop()
|
||||||
|
|
||||||
|
@callback
|
||||||
def _stop_manual_heartbeat(self, event: Event | None = None) -> None:
|
def _stop_manual_heartbeat(self, event: Event | None = None) -> None:
|
||||||
if self.data.hosts_heartbeat:
|
if self.data.hosts_heartbeat:
|
||||||
self.data.hosts_heartbeat()
|
self.data.hosts_heartbeat()
|
||||||
@ -569,14 +574,18 @@ class SonosDiscoveryManager:
|
|||||||
await self.hass.config_entries.async_forward_entry_setups(self.entry, PLATFORMS)
|
await self.hass.config_entries.async_forward_entry_setups(self.entry, PLATFORMS)
|
||||||
self.entry.async_on_unload(
|
self.entry.async_on_unload(
|
||||||
self.hass.bus.async_listen_once(
|
self.hass.bus.async_listen_once(
|
||||||
EVENT_HOMEASSISTANT_STOP, self._async_stop_event_listener
|
EVENT_HOMEASSISTANT_STOP,
|
||||||
|
self._async_stop_event_listener,
|
||||||
|
run_immediately=True,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
_LOGGER.debug("Adding discovery job")
|
_LOGGER.debug("Adding discovery job")
|
||||||
if self.hosts:
|
if self.hosts:
|
||||||
self.entry.async_on_unload(
|
self.entry.async_on_unload(
|
||||||
self.hass.bus.async_listen_once(
|
self.hass.bus.async_listen_once(
|
||||||
EVENT_HOMEASSISTANT_STOP, self._stop_manual_heartbeat
|
EVENT_HOMEASSISTANT_STOP,
|
||||||
|
self._stop_manual_heartbeat,
|
||||||
|
run_immediately=True,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
await self.async_poll_manual_hosts()
|
await self.async_poll_manual_hosts()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user