From 854735a89de94a8e6b82b288482d0f7fb09d5f47 Mon Sep 17 00:00:00 2001
From: Stefan Haun <tux@netz39.de>
Date: Sat, 24 Aug 2019 13:34:12 +0200
Subject: [PATCH] Make theme buttons responsive again

---
 preload/main.py | 46 +++++++++++++++++++++++++++++-----------------
 1 file changed, 29 insertions(+), 17 deletions(-)

diff --git a/preload/main.py b/preload/main.py
index 53051b6a..0f5a0fd8 100644
--- a/preload/main.py
+++ b/preload/main.py
@@ -180,31 +180,43 @@ class Clock:
     def loop(self):
         colored = False
         button_pressed = False
+        update_counter = 0
+        new_theme = self.theme
         while True:
             try:
-                with display.open() as disp:
+                if update_counter == 0:
+                    update_counter = 10
 
-                    self.updateClock(disp)
-                    if self.run_once:
-                        break
+                    with display.open() as disp:
+                        # update the display
+                        self.updateClock(disp)
 
-                    # check for button presses
-                    v = buttons.read(buttons.BOTTOM_LEFT | buttons.BOTTOM_RIGHT)
-                    if v == 0:
-                        button_pressed = False
+                        # check theme
+                        if new_theme != self.theme:
+                            self.setTheme(new_theme)
+                            self.writeConfig()
 
-                    if not button_pressed and v & buttons.BOTTOM_LEFT != 0:
-                        button_pressed = True
-                        self.setTheme(self.theme - 1)
-                        self.writeConfig()
-                    elif not button_pressed and v & buttons.BOTTOM_RIGHT != 0:
-                        button_pressed = True
-                        self.setTheme(self.theme + 1)
-                        self.writeConfig()
+                update_counter = update_counter - 1
 
-                utime.sleep_ms(250)
+                if self.run_once:
+                    break
+
+                # check for button presses
+                v = buttons.read(buttons.BOTTOM_LEFT | buttons.BOTTOM_RIGHT)
+                if v == 0:
+                    button_pressed = False
+
+                if not button_pressed and v & buttons.BOTTOM_LEFT != 0:
+                    button_pressed = True
+                    new_theme = self.theme - 1
+                elif not button_pressed and v & buttons.BOTTOM_RIGHT != 0:
+                    button_pressed = True
+                    new_theme = self.theme + 1
+
+                utime.sleep_ms(25)
 
             except OSError:
+                # leds.set(1, (255, 0, 0))
                 pass
 
             except KeyboardInterrupt:
-- 
GitLab