ui: bg brightness write thread (#38030)

* bg brightness thread

* rn

* later

* better

* rn
This commit is contained in:
Shane Smiskol
2026-05-12 20:37:57 -07:00
committed by GitHub
parent 57c44831da
commit b3ed39525d
+18 -4
View File
@@ -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