ui: fill the bg with disengaged color if no frame (#35451)

fill the bg with disengaged color if no frame

Co-authored-by: Shane Smiskol <shane@smiskol.com>
This commit is contained in:
Dean Lee
2025-06-05 05:08:29 +08:00
committed by GitHub
parent 96cfd5aaf7
commit 0360926962
2 changed files with 13 additions and 0 deletions
@@ -28,6 +28,7 @@ BORDER_COLORS = {
class AugmentedRoadView(CameraView):
def __init__(self, stream_type: VisionStreamType = VisionStreamType.VISION_STREAM_ROAD):
super().__init__("camerad", stream_type)
self._set_placeholder_color(BORDER_COLORS[UIStatus.DISENGAGED])
self.device_camera: DeviceCameraConfig | None = None
self.view_from_calib = view_frame_from_device_frame.copy()
+12
View File
@@ -74,6 +74,8 @@ class CameraView:
self.egl_images: dict[int, EGLImage] = {}
self.egl_texture: rl.Texture | None = None
self._placeholder_color : rl.Color | None = None
# Initialize EGL for zero-copy rendering on TICI
if TICI:
if not init_egl():
@@ -84,6 +86,10 @@ class CameraView:
self.egl_texture = rl.load_texture_from_image(temp_image)
rl.unload_image(temp_image)
def _set_placeholder_color(self, color: rl.Color):
"""Set a placeholder color to be drawn when no frame is available."""
self._placeholder_color = color
def switch_stream(self, stream_type: VisionStreamType) -> None:
if self._stream_type != stream_type:
cloudlog.debug(f'switching stream from {self._stream_type} to {stream_type}')
@@ -130,6 +136,7 @@ class CameraView:
def render(self, rect: rl.Rectangle):
if not self._ensure_connection():
self._draw_placeholder(rect)
return
# Try to get a new buffer without blocking
@@ -139,6 +146,7 @@ class CameraView:
self.frame = buffer
if not self.frame:
self._draw_placeholder(rect)
return
transform = self._calc_frame_matrix(rect)
@@ -163,6 +171,10 @@ class CameraView:
else:
self._render_textures(src_rect, dst_rect)
def _draw_placeholder(self, rect: rl.Rectangle):
if self._placeholder_color:
rl.draw_rectangle_rec(rect, self._placeholder_color)
def _render_egl(self, src_rect: rl.Rectangle, dst_rect: rl.Rectangle) -> None:
"""Render using EGL for direct buffer access"""
if self.frame is None or self.egl_texture is None: