Skip to content

Commit ef9683e

Browse files
ui: skip rendering when screen is off (#36510)
* skip rendering when screen is off * continue and rename * revert that * flip --------- Co-authored-by: Adeeb Shihadeh <[email protected]>
1 parent 8a77534 commit ef9683e

File tree

6 files changed

+26
-18
lines changed

6 files changed

+26
-18
lines changed

selfdrive/ui/ui.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,9 @@ def main():
1313
gui_app.init_window("UI")
1414
main_layout = MainLayout()
1515
main_layout.set_rect(rl.Rectangle(0, 0, gui_app.width, gui_app.height))
16-
for showing_dialog in gui_app.render():
16+
for should_render in gui_app.render():
1717
ui_state.update()
18-
19-
if not showing_dialog:
18+
if should_render:
2019
main_layout.render()
2120

2221

selfdrive/ui/ui_state.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,7 @@ def _set_awake(self, on: bool):
253253
self._awake = on
254254
cloudlog.debug(f"setting display power {int(on)}")
255255
HARDWARE.set_display_power(on)
256+
gui_app.set_should_render(on)
256257

257258

258259
# Global instance

system/ui/lib/application.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,8 @@ def __init__(self, width: int, height: int):
156156
self._mouse = MouseState(self._scale)
157157
self._mouse_events: list[MouseEvent] = []
158158

159+
self._should_render = True
160+
159161
# Debug variables
160162
self._mouse_history: deque[MousePos] = deque(maxlen=MOUSE_THREAD_RATE)
161163

@@ -237,6 +239,9 @@ def set_modal_overlay(self, overlay, callback: Callable | None = None):
237239

238240
self._modal_overlay = ModalOverlay(overlay=overlay, callback=callback)
239241

242+
def set_should_render(self, should_render: bool):
243+
self._should_render = should_render
244+
240245
def texture(self, asset_path: str, width: int | None = None, height: int | None = None,
241246
alpha_premultiply=False, keep_aspect_ratio=True):
242247
cache_key = f"{asset_path}_{width}_{height}_{alpha_premultiply}{keep_aspect_ratio}"
@@ -322,6 +327,12 @@ def render(self):
322327
# Store all mouse events for the current frame
323328
self._mouse_events = self._mouse.get_events()
324329

330+
# Skip rendering when screen is off
331+
if not self._should_render:
332+
time.sleep(1 / self._target_fps)
333+
yield False
334+
continue
335+
325336
if self._render_texture:
326337
rl.begin_texture_mode(self._render_texture)
327338
rl.clear_background(rl.BLACK)
@@ -344,9 +355,9 @@ def render(self):
344355
self._modal_overlay = ModalOverlay()
345356
if original_modal.callback is not None:
346357
original_modal.callback(result)
347-
yield True
348-
else:
349358
yield False
359+
else:
360+
yield True
350361

351362
if self._render_texture:
352363
rl.end_texture_mode()

system/ui/reset.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -126,11 +126,10 @@ def main():
126126
if mode == ResetMode.FORMAT:
127127
reset.start_reset()
128128

129-
for showing_dialog in gui_app.render():
130-
if showing_dialog:
131-
continue
132-
if not reset.render(rl.Rectangle(45, 200, gui_app.width - 90, gui_app.height - 245)):
133-
break
129+
for should_render in gui_app.render():
130+
if should_render:
131+
if not reset.render(rl.Rectangle(45, 200, gui_app.width - 90, gui_app.height - 245)):
132+
break
134133

135134

136135
if __name__ == "__main__":

system/ui/setup.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -432,10 +432,9 @@ def main():
432432
try:
433433
gui_app.init_window("Setup", 20)
434434
setup = Setup()
435-
for showing_dialog in gui_app.render():
436-
if showing_dialog:
437-
continue
438-
setup.render(rl.Rectangle(0, 0, gui_app.width, gui_app.height))
435+
for should_render in gui_app.render():
436+
if should_render:
437+
setup.render(rl.Rectangle(0, 0, gui_app.width, gui_app.height))
439438
setup.close()
440439
except Exception as e:
441440
print(f"Setup error: {e}")

system/ui/updater.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -161,10 +161,9 @@ def main():
161161
try:
162162
gui_app.init_window("System Update")
163163
updater = Updater(updater_path, manifest_path)
164-
for showing_dialog in gui_app.render():
165-
if showing_dialog:
166-
continue
167-
updater.render(rl.Rectangle(0, 0, gui_app.width, gui_app.height))
164+
for should_render in gui_app.render():
165+
if should_render:
166+
updater.render(rl.Rectangle(0, 0, gui_app.width, gui_app.height))
168167
finally:
169168
# Make sure we clean up even if there's an error
170169
gui_app.close()

0 commit comments

Comments
 (0)