From 2bc97ee23f7d97f34d2469f698f974e723e8a1df Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Sat, 4 Oct 2025 00:05:20 -0700 Subject: [PATCH] raylib: fix DM popup (#36265) * come on * try * better * better * multiple places! * debug * works * temp * whoops * wonder if this wortks * ah need this! * wtf is this when deleted? * another day no modal show event * clean * fix * ugh * need this --- selfdrive/ui/onroad/driver_camera_dialog.py | 11 +++++++++-- system/ui/lib/application.py | 4 ++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/selfdrive/ui/onroad/driver_camera_dialog.py b/selfdrive/ui/onroad/driver_camera_dialog.py index 6c5508ce7d..a3bd2e23e0 100644 --- a/selfdrive/ui/onroad/driver_camera_dialog.py +++ b/selfdrive/ui/onroad/driver_camera_dialog.py @@ -3,7 +3,7 @@ import pyray as rl from msgq.visionipc import VisionStreamType from openpilot.selfdrive.ui.onroad.cameraview import CameraView from openpilot.selfdrive.ui.onroad.driver_state import DriverStateRenderer -from openpilot.selfdrive.ui.ui_state import ui_state +from openpilot.selfdrive.ui.ui_state import ui_state, device from openpilot.system.ui.lib.application import gui_app, FontWeight from openpilot.system.ui.widgets.label import gui_label @@ -12,10 +12,17 @@ class DriverCameraDialog(CameraView): def __init__(self): super().__init__("camerad", VisionStreamType.VISION_STREAM_DRIVER) self.driver_state_renderer = DriverStateRenderer() + # TODO: this can grow unbounded, should be given some thought + device.add_interactive_timeout_callback(self.stop_dmonitoringmodeld) + ui_state.params.put_bool("IsDriverViewEnabled", True) + + def stop_dmonitoringmodeld(self): + ui_state.params.put_bool("IsDriverViewEnabled", False) + gui_app.set_modal_overlay(None) def _handle_mouse_release(self, _): super()._handle_mouse_release(_) - gui_app.set_modal_overlay(None) + self.stop_dmonitoringmodeld() def _render(self, rect): super()._render(rect) diff --git a/system/ui/lib/application.py b/system/ui/lib/application.py index a42b1d1129..473eaa5fa8 100644 --- a/system/ui/lib/application.py +++ b/system/ui/lib/application.py @@ -178,6 +178,10 @@ class GuiApplication: self._mouse.start() def set_modal_overlay(self, overlay, callback: Callable | None = None): + if self._modal_overlay.overlay is not None: + if self._modal_overlay.callback is not None: + self._modal_overlay.callback(-1) + self._modal_overlay = ModalOverlay(overlay=overlay, callback=callback) def texture(self, asset_path: str, width: int, height: int, alpha_premultiply=False, keep_aspect_ratio=True):