UI Snapshot Reuse

This commit is contained in:
firestar5683
2026-10-05 00:42:04 -05:00
parent 3f0d494764
commit 0986e61b4e
3 changed files with 13 additions and 2 deletions
+3 -1
View File
@@ -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)
@@ -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__":
@@ -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()