From d495521fbd3a60e242ef3cd553dea1ad8f89e999 Mon Sep 17 00:00:00 2001
From: Sebastian Krzyszkowiak <dos@dosowisko.net>
Date: Fri, 17 Nov 2023 01:32:32 +0100
Subject: [PATCH] Move LED handling back to main thread

---
 __init__.py | 25 +++++++------------------
 1 file changed, 7 insertions(+), 18 deletions(-)

diff --git a/__init__.py b/__init__.py
index b9bd72d..854ac81 100644
--- a/__init__.py
+++ b/__init__.py
@@ -34,21 +34,9 @@ if not UNSUPPORTED:
     from . import flower
     from . import select
     from . import readme
-    
-led_lock = _thread.allocate_lock()
+
 blm_lock = _thread.allocate_lock()
 
-def led_thread(app):
-    start = time.ticks_ms()
-    while app.is_active():
-        if led_lock.acquire(0):
-            leds.set_all_rgb(0, 0, 0)
-            for i in range(5):
-                utils.petal_leds(i, pow(-math.cos((time.ticks_ms() - start) / 1000) / 2 + 0.5, 1 / 2.2))
-            leds.update()
-            led_lock.release()
-        time.sleep_ms(25)
-            
 def blm_thread(app, num):
     time.sleep(1.0)
     if blm_lock.acquire(1):
@@ -323,6 +311,11 @@ class PetalHero(Application):
             
         self.show_artist = ins.captouch.petals[5].pressed
 
+        leds.set_all_rgb(0, 0, 0)
+        for i in range(5):
+            utils.petal_leds(i, pow(-math.cos((time.ticks_ms() - self.start) / 1000) / 2 + 0.5, 1 / 2.2))
+        leds.update()
+
     def on_enter(self, vm) -> None:
         super().on_enter(vm)
         if UNSUPPORTED:
@@ -338,16 +331,14 @@ class PetalHero(Application):
         media.set_volume(1.0)
         media.load(self.path + '/sounds/menu.mp3')
         self.time = -1
-        led_lock.acquire(1)
         leds.set_all_rgb(0, 0, 0)
         leds.update()
-        led_lock.release()
         leds.set_slew_rate(255)
         leds.set_gamma(2.2, 2.2, 2.2)
         leds.set_auto_update(False)
         leds.set_brightness(int(pow(st3m.settings.num_leds_brightness.value / 255, 1/2.2) * 255))
         self.sc.set_position(0.0)
-        _thread.start_new_thread(led_thread, (self,))
+        self.start = time.ticks_ms()
 
     def on_enter_done(self):
         leds.set_slew_rate(42)
@@ -357,10 +348,8 @@ class PetalHero(Application):
         if UNSUPPORTED or self.reentry:
             return
         media.stop()
-        led_lock.acquire(1)
         leds.set_all_rgb(0, 0, 0)
         leds.update()
-        led_lock.release()
         if self.vm.direction == ViewTransitionDirection.BACKWARD:
             utils.play_back(self.app)
             self.unloading = self.unloading_num
-- 
GitLab