diff --git a/openpilot/starpilot/ui/runtime_app.py b/openpilot/starpilot/ui/runtime_app.py index 7dc50b1536..1382e94acb 100644 --- a/openpilot/starpilot/ui/runtime_app.py +++ b/openpilot/starpilot/ui/runtime_app.py @@ -1002,7 +1002,9 @@ class StarShellSession: compact_scroll_x=self.compact_scroll_x, sidebar_expanded=self.sidebar_expanded, menu_only=self.profile == Profile.COMPACT and mode == ShellMode.SETTINGS) if mode == ShellMode.ONROAD and self.profile == Profile.LARGE: - snapshot = replace(snapshot, onroad=replace(snapshot.onroad, viewport_width=getattr(self, '_onroad_width', 1860.0))) + width = getattr(self, '_onroad_width', 1860.0) + if snapshot.onroad.viewport_width != width: + snapshot = replace(snapshot, onroad=replace(snapshot.onroad, viewport_width=width)) if mode == ShellMode.HOME: now = time.monotonic() previous = getattr(self, "_home_model", None) diff --git a/openpilot/starpilot/ui/tests/test_developer_preview.py b/openpilot/starpilot/ui/tests/test_developer_preview.py index 4260c974ea..208d439f5e 100644 --- a/openpilot/starpilot/ui/tests/test_developer_preview.py +++ b/openpilot/starpilot/ui/tests/test_developer_preview.py @@ -65,6 +65,8 @@ class DeveloperPreviewTests(unittest.TestCase): session._visual_preview_start_ns = 1_000_000_000 with patch.object(runtime_app.time, "monotonic_ns", return_value=4_000_000_000): self.assertIs(session.snapshot(ShellMode.ONROAD), baseline) + self.assertIs(session.snapshot(ShellMode.ONROAD), baseline) + adapter.build.assert_called_once() session._visual_preview_flags = frozenset(("cem", "csc")) session._snapshot_cache = None observed = session.snapshot(ShellMode.ONROAD) @@ -72,6 +74,13 @@ class DeveloperPreviewTests(unittest.TestCase): self.assertEqual(observed.onroad.visual_preview.curve_curvature, .008) self.assertEqual(replace(observed, onroad=baseline.onroad), baseline) self.assertIsNone(baseline.onroad.visual_preview) + self.assertIs(session.snapshot(ShellMode.ONROAD), observed) + session._onroad_width = 1560.0 + session._snapshot_cache = None + resized = session.snapshot(ShellMode.ONROAD) + self.assertEqual(resized.onroad.viewport_width, 1560.0) + self.assertEqual(replace(resized.onroad, viewport_width=baseline.onroad.viewport_width), observed.onroad) + self.assertEqual(baseline.onroad.viewport_width, 1860.0) if __name__ == "__main__": diff --git a/openpilot/starpilot/ui/tests/test_onroad_axes.py b/openpilot/starpilot/ui/tests/test_onroad_axes.py index edce276f6a..1297416c92 100644 --- a/openpilot/starpilot/ui/tests/test_onroad_axes.py +++ b/openpilot/starpilot/ui/tests/test_onroad_axes.py @@ -114,7 +114,7 @@ class TestOnroadAxes(unittest.TestCase): for profile in (Profile.LARGE, Profile.COMPACT): with self.subTest(profile=profile, lateral=lateral, longitudinal=longitudinal): view = onroad.OnroadView.__new__(onroad.OnroadView) - object.__setattr__(view, "fonts", NS(profile=profile)) + object.__setattr__(view, "fonts", NS(profile=profile, draw=Mock(), measure=Mock(return_value=NS(width=100, height=30)))) view.camera_layer = Mock() view.extra_overlays = None view.alert = Mock()