wait for renderer first

pull/35003/head
Cameron Clough 1 week ago
parent 442f791f8b
commit c958755377
  1. 33
      system/ui/lib/wrapper.py
  2. 2
      system/ui/spinner.py

@ -1,29 +1,29 @@
import threading
import time
from typing import Generic, TypeVar
from typing import Any
from openpilot.system.ui.lib.application import gui_app
class Renderer:
def render(self): ...
class Wrapper:
_renderer: Any
T = TypeVar("T", bound=Renderer)
class Wrapper(Generic[T]):
def __init__(self, title: str, renderer_cls: type[T], *args):
def __init__(self, title: str, renderer_cls, *renderer_args):
self._title = title
self._renderer_class = renderer_cls
self._renderer_args = args
self._renderer: T | None = None
self._renderer_cls = renderer_cls
self._renderer_args = renderer_args
self._stop_event = threading.Event()
self._thread = threading.Thread(target=self._run, args=(self._stop_event,), daemon=True)
self._thread = threading.Thread(target=self._run, daemon=True)
self._thread.start()
def _run(self, stop_event: threading.Event):
# wait for renderer to be initialized
while self._renderer is None and self._thread is not None and self._thread.is_alive():
time.sleep(0.01)
def _run(self):
gui_app.init_window(self._title)
self._renderer = self._renderer_class(*self._renderer_args)
self._renderer = self._renderer_cls(*self._renderer_args)
try:
for _ in gui_app.render():
if stop_event.is_set():
if self._stop_event.is_set():
break
self._renderer.render()
finally:
@ -32,11 +32,6 @@ class Wrapper(Generic[T]):
def __enter__(self):
return self
def wait(self):
"""wait for renderer to be initialized"""
while self._renderer is None and self._thread is not None and self._thread.is_alive():
time.sleep(0.01)
def close(self):
if self._thread is not None and self._thread.is_alive():
self._stop_event.set()

@ -73,8 +73,6 @@ class Spinner(Wrapper):
super().__init__("Spinner", Renderer)
def update(self, spinner_text: str):
self.wait()
if self._renderer:
self._renderer.set_text(spinner_text)
def update_progress(self, cur: float, total: float):

Loading…
Cancel
Save