BigUI WIP: Optimizations

This commit is contained in:
firestarsdog
2026-05-30 03:24:04 -04:00
parent cc2b53a6e9
commit 6ca397b840
3 changed files with 26 additions and 18 deletions
@@ -535,6 +535,7 @@ class StarPilotMapsLayout(StarPilotPanel):
self._active_state_group_key = "whole_us"
self._full_us_mode = True
self._whole_us_context_initialized = False
self._cached_selected_tokens: set[str] = set()
self._download_button = self._child(
AetherButton(
@@ -585,6 +586,9 @@ class StarPilotMapsLayout(StarPilotPanel):
def _update_state(self):
super()._update_state()
self._cached_selected_tokens = _selected_token_set(
self._params.get("MapsSelected", encoding="utf-8") or ""
)
self._sync_download_state()
if self._pending_storage_state is not None:
generation, storage_text, has_downloaded_data = self._pending_storage_state
@@ -692,7 +696,7 @@ class StarPilotMapsLayout(StarPilotPanel):
return _format_mb(total_size), has_files
def _selected_tokens(self) -> set[str]:
return _selected_token_set(self._params.get("MapsSelected", encoding="utf-8") or "")
return self._cached_selected_tokens
def _selected_count(self) -> int:
return len(self._selected_tokens())
@@ -903,7 +907,7 @@ class StarPilotMapsLayout(StarPilotPanel):
return token in self._selected_tokens()
def _set_map_state(self, token: str, state: bool):
selected = self._selected_tokens()
selected = set(self._cached_selected_tokens)
if state:
if token == US_COUNTRY_TOKEN:
selected = {item for item in selected if not item.startswith(STATE_PREFIX)}
@@ -921,6 +925,7 @@ class StarPilotMapsLayout(StarPilotPanel):
if self._active_state_group_key == "whole_us":
self._active_state_group_key = STATES_SECTION["groups"][0]["key"]
self._params.put("MapsSelected", sanitize_selected_locations_csv(sorted(selected)))
self._cached_selected_tokens = selected
def _network_type(self):
return ui_state.sm["deviceState"].networkType if ui_state.sm.valid.get("deviceState", False) else NetworkType.none
+13 -12
View File
@@ -125,7 +125,11 @@ class ModelRenderer(Widget):
# StarPilot lead indicator visibility conditions
hide_lead_marker = self._params.get_bool("HideLeadMarker")
lead_info_enabled = self._params.get_bool("LeadInfo")
self._lead_info_enabled = self._params.get_bool("LeadInfo")
self._use_rainbow = self._params.get_bool('RainbowPath', default=False)
self._use_accel_path = self._params.get_bool('AccelerationPath', default=True)
self._is_metric = self._params.get_bool('IsMetric')
lead_info_enabled = self._lead_info_enabled
render_lead_indicator = (self._longitudinal_control or lead_info_enabled) and radar_state is not None and not hide_lead_marker
# Update model data when needed
@@ -261,13 +265,12 @@ class ModelRenderer(Widget):
def _update_experimental_gradient(self):
"""Pre-calculate experimental mode gradient colors"""
use_rainbow = self._params.get_bool('RainbowPath', default=False)
if use_rainbow:
if self._use_rainbow:
gradient_bottom, gradient_top = self._get_visible_gradient_bounds()
self._exp_gradient = self._build_rainbow_gradient(gradient_bottom, gradient_top)
return
if not self._experimental_mode or not self._params.get_bool('AccelerationPath', default=True):
if not self._experimental_mode or not self._use_accel_path:
return
max_len = min(len(self._path.projected_points) // 2, len(self._acceleration_x))
@@ -399,8 +402,8 @@ class ModelRenderer(Widget):
allow_throttle = sm['longitudinalPlan'].allowThrottle or not self._longitudinal_control
self._blend_filter.update(int(allow_throttle))
use_rainbow = self._params.get_bool('RainbowPath', default=False)
use_accel_path = not use_rainbow and self._params.get_bool('AccelerationPath', default=True)
use_rainbow = self._use_rainbow
use_accel_path = not use_rainbow and self._use_accel_path
if use_rainbow:
if len(self._exp_gradient.colors) > 1:
draw_polygon(self._rect, self._path.projected_points, gradient=self._exp_gradient)
@@ -466,8 +469,7 @@ class ModelRenderer(Widget):
rl.draw_triangle_fan(lead.chevron, len(lead.chevron), with_alpha(color, lead.fill_alpha))
# Draw metrics if enabled
lead_info_enabled = self._params.get_bool("LeadInfo")
if lead_info_enabled and i < len(leads) and leads[i] and leads[i].status:
if self._lead_info_enabled and i < len(leads) and leads[i] and leads[i].status:
self._draw_lead_metrics(False, lead.chevron, leads[i])
def _update_adjacent_leads(self, starpilot_radar_state, path_x_array):
@@ -511,8 +513,7 @@ class ModelRenderer(Widget):
rl.draw_triangle_fan(lead.chevron, len(lead.chevron), with_alpha(color, lead.fill_alpha))
# Draw metrics if enabled
lead_info_enabled = self._params.get_bool("LeadInfo")
if lead_info_enabled:
if self._lead_info_enabled:
self._draw_lead_metrics(True, lead.chevron, lead_data)
def _draw_lead_metrics(self, adjacent, chevron, lead_data):
@@ -894,14 +895,14 @@ class ModelRenderer(Widget):
def _small_distance_to_half_m(self, value: float) -> float:
if value <= 0:
return 0.0
if self._params.get_bool("IsMetric"):
if self._is_metric:
return value / 200.0
return value * (CV.INCH_TO_CM / 100.0) / 2.0
def _path_width_to_half_m(self, value: float) -> float:
if value <= 0:
return 0.0
if self._params.get_bool("IsMetric"):
if self._is_metric:
return value / 2.0
return value * CV.FOOT_TO_METER / 2.0
+6 -4
View File
@@ -164,9 +164,11 @@ class UIState:
self.light_sensor = -1
# Trust hardwared's filtered started state; raw ignition can flap on Toyota.
force_onroad = self.params.get_bool("ForceOnroad")
force_offroad = self.params.get_bool("ForceOffroad")
started = self.sm["deviceState"].started
started |= self.params.get_bool("ForceOnroad")
started &= not self.params.get_bool("ForceOffroad")
started |= force_onroad
started &= not force_offroad
self.started = started
# Update recording audio state
@@ -197,8 +199,8 @@ class UIState:
except Exception as e:
cloudlog.warning(f"Error parsing starpilot_toggles: {e}")
self.starpilot_toggles["force_offroad"] = self.params.get_bool("ForceOffroad")
self.starpilot_toggles["force_onroad"] = self.params.get_bool("ForceOnroad")
self.starpilot_toggles["force_offroad"] = force_offroad
self.starpilot_toggles["force_onroad"] = force_onroad
def _update_status(self) -> None:
if self.started and self.sm.updated["selfdriveState"]: