From e9fe40755ca1da3e17e5e92d26e69b8b836c4b54 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Thu, 12 Jun 2025 17:44:20 -0700 Subject: [PATCH 1/2] raylib ui: fix Firehose param loading (#35548) fix --- selfdrive/ui/layouts/settings/firehose.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/selfdrive/ui/layouts/settings/firehose.py b/selfdrive/ui/layouts/settings/firehose.py index 1c5df061ec..602d2d807b 100644 --- a/selfdrive/ui/layouts/settings/firehose.py +++ b/selfdrive/ui/layouts/settings/firehose.py @@ -1,4 +1,5 @@ import pyray as rl +import json import time import threading @@ -40,7 +41,7 @@ class FirehoseLayout(Widget): def __init__(self): super().__init__() self.params = Params() - self.segment_count = int(self.params.get(self.PARAM_KEY, encoding='utf8') or 0) + self.segment_count = self._get_segment_count() self.scroll_panel = GuiScrollPanel() self.running = True @@ -48,6 +49,14 @@ class FirehoseLayout(Widget): self.update_thread.start() self.last_update_time = 0 + def _get_segment_count(self) -> int: + stats = self.params.get(self.PARAM_KEY, encoding='utf8') + try: + return int(json.loads(stats).get("firehose", 0)) + except json.JSONDecodeError: + cloudlog.error(f"Failed to decode firehose stats: {stats}") + return 0 + def __del__(self): self.running = False if self.update_thread and self.update_thread.is_alive(): From 7b8d6b6eb71552c3065088ebe22c9dc72eb9617e Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Thu, 12 Jun 2025 20:02:27 -0700 Subject: [PATCH 2/2] raylib ui: reduce DM drawing (#35547) * reduce? * clean up --- selfdrive/ui/onroad/driver_state.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/selfdrive/ui/onroad/driver_state.py b/selfdrive/ui/onroad/driver_state.py index 20248d7e6e..951b39f5cb 100644 --- a/selfdrive/ui/onroad/driver_state.py +++ b/selfdrive/ui/onroad/driver_state.py @@ -51,7 +51,6 @@ class DriverStateRenderer(Widget): self.is_rhd = False self.dm_fade_state = 0.0 self.state_updated = False - self.last_rect: rl.Rectangle = rl.Rectangle(0, 0, 0, 0) self.driver_pose_vals = np.zeros(3, dtype=np.float32) self.driver_pose_diff = np.zeros(3, dtype=np.float32) self.driver_pose_sins = np.zeros(3, dtype=np.float32) @@ -111,9 +110,6 @@ class DriverStateRenderer(Widget): def _update_state(self, sm, rect): """Update the driver monitoring state based on model data""" if not sm.updated["driverMonitoringState"]: - if self.state_updated and (rect.x != self.last_rect.x or rect.y != self.last_rect.y or - rect.width != self.last_rect.width or rect.height != self.last_rect.height): - self._pre_calculate_drawing_elements(rect) return # Get monitoring state