curious if locks are lagging

pull/36039/head
Shane Smiskol 3 days ago
parent 1efba50de0
commit 085dd185b0
  1. 72
      system/ui/widgets/network.py

@ -67,21 +67,20 @@ class WifiManagerUI(Widget):
self.wifi_manager.set_active(False) self.wifi_manager.set_active(False)
def _render(self, rect: rl.Rectangle): def _render(self, rect: rl.Rectangle):
with self._lock: if not self._networks:
if not self._networks: gui_label(rect, "Scanning Wi-Fi networks...", 72, alignment=rl.GuiTextAlignment.TEXT_ALIGN_CENTER)
gui_label(rect, "Scanning Wi-Fi networks...", 72, alignment=rl.GuiTextAlignment.TEXT_ALIGN_CENTER) return
return
if self.state == UIState.NEEDS_AUTH and self._state_network:
if self.state == UIState.NEEDS_AUTH and self._state_network: self.keyboard.set_title("Wrong password" if self._password_retry else "Enter password", f"for {self._state_network.ssid}")
self.keyboard.set_title("Wrong password" if self._password_retry else "Enter password", f"for {self._state_network.ssid}") self.keyboard.reset()
self.keyboard.reset() gui_app.set_modal_overlay(self.keyboard, lambda result: self._on_password_entered(cast(Network, self._state_network), result))
gui_app.set_modal_overlay(self.keyboard, lambda result: self._on_password_entered(cast(Network, self._state_network), result)) elif self.state == UIState.SHOW_FORGET_CONFIRM and self._state_network:
elif self.state == UIState.SHOW_FORGET_CONFIRM and self._state_network: self._confirm_dialog.set_text(f'Forget Wi-Fi Network "{self._state_network.ssid}"?')
self._confirm_dialog.set_text(f'Forget Wi-Fi Network "{self._state_network.ssid}"?') self._confirm_dialog.reset()
self._confirm_dialog.reset() gui_app.set_modal_overlay(self._confirm_dialog, callback=lambda result: self.on_forgot_confirm_finished(self._state_network, result))
gui_app.set_modal_overlay(self._confirm_dialog, callback=lambda result: self.on_forgot_confirm_finished(self._state_network, result)) else:
else: self._draw_network_list(rect)
self._draw_network_list(rect)
def _on_password_entered(self, network: Network, result: int): def _on_password_entered(self, network: Network, result: int):
if result == 1: if result == 1:
@ -219,42 +218,37 @@ class WifiManagerUI(Widget):
def _on_network_updated(self, networks: list[Network]): def _on_network_updated(self, networks: list[Network]):
print('CALLBACK: _on_network_updated') print('CALLBACK: _on_network_updated')
# TODO: wifimanager has a nonblocking getter, we don't need to use callbacks nearly as much # TODO: wifimanager has a nonblocking getter, we don't need to use callbacks nearly as much
with self._lock: t = time.monotonic()
t = time.monotonic() self._networks = networks
self._networks = networks for n in self._networks:
for n in self._networks: self._networks_buttons[n.ssid] = Button(n.ssid, partial(self._networks_buttons_callback, n), font_size=55, text_alignment=TextAlignment.LEFT,
self._networks_buttons[n.ssid] = Button(n.ssid, partial(self._networks_buttons_callback, n), font_size=55, text_alignment=TextAlignment.LEFT, button_style=ButtonStyle.NO_EFFECT)
button_style=ButtonStyle.NO_EFFECT) self._forget_networks_buttons[n.ssid] = Button("Forget", partial(self._forget_networks_buttons_callback, n), button_style=ButtonStyle.FORGET_WIFI,
self._forget_networks_buttons[n.ssid] = Button("Forget", partial(self._forget_networks_buttons_callback, n), button_style=ButtonStyle.FORGET_WIFI, font_size=45)
font_size=45) print(f"WifiManagerUI: networks updated, {len(networks)} networks, took {time.monotonic() - t}s")
print(f"WifiManagerUI: networks updated, {len(networks)} networks, took {time.monotonic() - t}s")
def _on_need_auth(self, ssid): def _on_need_auth(self, ssid):
print('CALLBACK: _on_need_auth') print('CALLBACK: _on_need_auth')
with self._lock: network = next((n for n in self._networks if n.ssid == ssid), None)
network = next((n for n in self._networks if n.ssid == ssid), None) if network:
if network: self.state = UIState.NEEDS_AUTH
self.state = UIState.NEEDS_AUTH self._state_network = network
self._state_network = network self._password_retry = True
self._password_retry = True
def _on_activated(self): def _on_activated(self):
print('CALLBACK: _on_activated') print('CALLBACK: _on_activated')
with self._lock: if self.state == UIState.CONNECTING:
if self.state == UIState.CONNECTING: self.state = UIState.IDLE
self.state = UIState.IDLE
def _on_forgotten(self, ssid): def _on_forgotten(self, ssid):
print('CALLBACK: _on_forgotten') print('CALLBACK: _on_forgotten')
with self._lock: if self.state == UIState.FORGETTING:
if self.state == UIState.FORGETTING: self.state = UIState.IDLE
self.state = UIState.IDLE
def _on_disconnected(self): def _on_disconnected(self):
print('CALLBACK: _on_disconnected') print('CALLBACK: _on_disconnected')
with self._lock: if self.state == UIState.CONNECTING:
if self.state == UIState.CONNECTING: self.state = UIState.IDLE
self.state = UIState.IDLE
def main(): def main():

Loading…
Cancel
Save