From f04bb6b9fa8b6ab5dcddbc0b7283a38d3a83d604 Mon Sep 17 00:00:00 2001 From: Maxime Desroches Date: Thu, 7 Aug 2025 13:43:27 -0700 Subject: [PATCH] ui: reduce network selection lag (#35945) lag --- system/ui/lib/wifi_manager.py | 9 ++------- system/ui/widgets/network.py | 3 +-- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/system/ui/lib/wifi_manager.py b/system/ui/lib/wifi_manager.py index acdab3b411..50b26acc43 100644 --- a/system/ui/lib/wifi_manager.py +++ b/system/ui/lib/wifi_manager.py @@ -441,20 +441,19 @@ class WifiManager: settings_iface.on_connection_removed(self._on_connection_removed) def _on_properties_changed(self, interface: str, changed: dict, invalidated: list): - if 'LastScan' in changed: + if interface == NM_WIRELESS_IFACE and 'LastScan' in changed: asyncio.create_task(self._refresh_networks()) elif interface == NM_WIRELESS_IFACE and "ActiveAccessPoint" in changed: new_ap_path = changed["ActiveAccessPoint"].value if self.active_ap_path != new_ap_path: self.active_ap_path = new_ap_path - asyncio.create_task(self._refresh_networks()) def _on_state_changed(self, new_state: int, old_state: int, reason: int): if new_state == NMDeviceState.ACTIVATED: if self.callbacks.activated: self.callbacks.activated() - asyncio.create_task(self._refresh_networks()) self._current_connection_ssid = None + asyncio.create_task(self._refresh_networks()) elif new_state in (NMDeviceState.DISCONNECTED, NMDeviceState.NEED_AUTH): for network in self.networks: network.is_connected = False @@ -487,9 +486,6 @@ class WifiManager: if self.callbacks.forgotten: self.callbacks.forgotten(ssid) - - # Update network list to reflect the removed saved connection - asyncio.create_task(self._refresh_networks()) break async def _add_saved_connection(self, path: str) -> None: @@ -498,7 +494,6 @@ class WifiManager: settings = await self._get_connection_settings(path) if ssid := self._extract_ssid(settings): self.saved_connections[ssid] = path - await self._refresh_networks() except DBusError as e: cloudlog.error(f"Failed to add connection {path}: {e}") diff --git a/system/ui/widgets/network.py b/system/ui/widgets/network.py index 35912a35fd..4eac1214c2 100644 --- a/system/ui/widgets/network.py +++ b/system/ui/widgets/network.py @@ -187,8 +187,7 @@ class WifiManagerUI(Widget): def _forget_networks_buttons_callback(self, network): if self.scroll_panel.is_touch_valid(): - if isinstance(self.state, StateIdle): - self.state = StateShowForgetConfirm(network) + self.state = StateShowForgetConfirm(network) def _draw_status_icon(self, rect, network: NetworkInfo): """Draw the status icon based on network's connection state"""