mirror of
https://github.com/infiniteCable2/openpilot.git
synced 2026-07-26 11:52:04 +08:00
ui: bg brightness write thread (#38030)
* bg brightness thread * rn * later * better * rn
This commit is contained in:
@@ -210,6 +210,8 @@ class Device:
|
||||
self._last_brightness: int = 0
|
||||
self._brightness_filter = FirstOrderFilter(BACKLIGHT_OFFROAD, 10.00, 1 / gui_app.target_fps)
|
||||
self._brightness_thread: threading.Thread | None = None
|
||||
self._brightness_event = threading.Event()
|
||||
self._brightness_target: int = 0
|
||||
|
||||
@property
|
||||
def awake(self) -> bool:
|
||||
@@ -235,6 +237,8 @@ class Device:
|
||||
self._interactive_timeout_callbacks.append(callback)
|
||||
|
||||
def update(self):
|
||||
self._start_brightness_thread() # start thread after manager forks ui
|
||||
|
||||
# do initial reset
|
||||
if self._interaction_time <= 0:
|
||||
self._reset_interactive_timeout()
|
||||
@@ -242,6 +246,17 @@ class Device:
|
||||
self._update_brightness()
|
||||
self._update_wakefulness()
|
||||
|
||||
def _start_brightness_thread(self):
|
||||
if self._brightness_thread is None or not self._brightness_thread.is_alive():
|
||||
self._brightness_thread = threading.Thread(target=self._brightness_worker, daemon=True)
|
||||
self._brightness_thread.start()
|
||||
|
||||
def _brightness_worker(self):
|
||||
while True:
|
||||
self._brightness_event.wait()
|
||||
self._brightness_event.clear()
|
||||
HARDWARE.set_screen_brightness(self._brightness_target)
|
||||
|
||||
def set_offroad_brightness(self, brightness: int | None):
|
||||
if brightness is None:
|
||||
brightness = BACKLIGHT_OFFROAD
|
||||
@@ -266,10 +281,9 @@ class Device:
|
||||
brightness = 0
|
||||
|
||||
if brightness != self._last_brightness:
|
||||
if self._brightness_thread is None or not self._brightness_thread.is_alive():
|
||||
self._brightness_thread = threading.Thread(target=HARDWARE.set_screen_brightness, args=(brightness,))
|
||||
self._brightness_thread.start()
|
||||
self._last_brightness = brightness
|
||||
self._brightness_target = brightness
|
||||
self._brightness_event.set()
|
||||
self._last_brightness = brightness
|
||||
|
||||
def _update_wakefulness(self):
|
||||
# Handle interactive timeout
|
||||
|
||||
Reference in New Issue
Block a user