From 565f70221593927f940a8e8b8d4c09dba864b5de Mon Sep 17 00:00:00 2001
From: Sebastian Krzyszkowiak <dos@dosowisko.net>
Date: Mon, 20 Nov 2023 03:01:16 +0100
Subject: [PATCH] py,st3m: Move menu LED pattern setting back later in the boot
 process

Since !620 it happened much earlier, causing a lot of flickering at boot,
especially with plenty of apps installed. Move it back to until after
the application bundles are already collected.

Note that it happens a bit later than before now, as bundle processing
itself happens later because of being moved into the menu class, but
the end result is arguably nicer than before, as there's no weird
delay between setting the LEDs and showing the menu anymore.

Fixes: 0698326412d0 ("Split sunmenu into its own file")
---
 python_payload/st3m/main_menu.py | 7 +++++++
 python_payload/st3m/run.py       | 5 -----
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/python_payload/st3m/main_menu.py b/python_payload/st3m/main_menu.py
index b962754561..b3049c5928 100644
--- a/python_payload/st3m/main_menu.py
+++ b/python_payload/st3m/main_menu.py
@@ -134,3 +134,10 @@ class MainMenu(SunMenu):
         self._items = categories
         # # self._scroll_controller = ScrollController()
         # self._scroll_controller.set_item_count(len(categories))
+
+    def on_enter(self, vm):
+        super().on_enter(vm)
+        if self.vm.direction == ViewTransitionDirection.FORWARD:
+            led_patterns.set_menu_colors()
+            leds.set_slew_rate(20)
+            leds.update()
diff --git a/python_payload/st3m/run.py b/python_payload/st3m/run.py
index 55e465f074..644fa5c607 100644
--- a/python_payload/st3m/run.py
+++ b/python_payload/st3m/run.py
@@ -9,7 +9,6 @@ from st3m.application import (
     setup_for_app,
 )
 from st3m import settings_menu as settings, logging, processors, wifi
-from st3m.ui import led_patterns
 import st3m.wifi
 import st3m.utils
 
@@ -171,10 +170,6 @@ def run_main() -> None:
     leds.set_rgb(0, 255, 0, 0)
     leds.update()
 
-    led_patterns.set_menu_colors()
-    leds.set_slew_rate(20)
-    leds.update()
-
     try:
         network.hostname(
             settings.str_hostname.value if settings.str_hostname.value else "flow3r"
-- 
GitLab