You've already forked MicroPythonOS
mirror of
https://github.com/m5stack/MicroPythonOS.git
synced 2026-05-20 11:51:27 -07:00
fix and simplify lvgltest
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
# Initialize
|
||||
|
||||
import display_driver
|
||||
import display_driver # not needed, but included because the LVGL simulator does it
|
||||
import lvgl as lv
|
||||
|
||||
# Create a button with a label
|
||||
@@ -17,17 +17,10 @@ lv.screen_load(scr)
|
||||
# END OF COPY-PASTE FROM https://sim.lvgl.io/v9.0/micropython/ports/webassembly/
|
||||
|
||||
|
||||
def check_running(timer):
|
||||
if lv.screen_active() == scr:
|
||||
print("hello.py is still foreground")
|
||||
else:
|
||||
def janitor_cb(timer):
|
||||
if lv.screen_active() != scr:
|
||||
print("hello.py lost foreground, cleaning up...")
|
||||
timer1.delete()
|
||||
janitor.delete()
|
||||
# No cleanups to do, but in a real app, you might stop timers, deinitialize hardware devices you used, close network connections, etc.
|
||||
|
||||
timer1 = lv.timer_create(check_running, 1000, None)
|
||||
|
||||
# Added: wait until the user navigates away instead of stopping immediately.
|
||||
#while lv.screen_active() == scr:
|
||||
# import time
|
||||
# time.sleep_ms(100)
|
||||
#print("User navigated away from the HelloWorld app. Bye bye!")
|
||||
janitor = lv.timer_create(janitor_cb, 1000, None)
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
appscreen = lv.screen_active()
|
||||
|
||||
import time
|
||||
import random
|
||||
|
||||
@@ -10,7 +8,7 @@ SPINNER_SIZE = 40 # Size of each spinner in pixels
|
||||
spinner_count = 0
|
||||
metrics_label = None
|
||||
|
||||
def add_spinner_and_update(timer):
|
||||
def add_spinner(timer):
|
||||
global spinner_count, metrics_label
|
||||
try:
|
||||
x = random.randint(0, appscreen.get_width() - SPINNER_SIZE)
|
||||
@@ -27,27 +25,22 @@ def add_spinner_and_update(timer):
|
||||
metrics_label.set_text(f"Spinners: {spinner_count}")
|
||||
print(f"Finished adding spinner {spinner_count}")
|
||||
|
||||
def run_benchmark():
|
||||
global spinner_count, metrics_label
|
||||
print("Starting LVGL spinner benchmark...")
|
||||
metrics_label = lv.label(appscreen)
|
||||
metrics_label.set_style_text_color(lv.color_white(), 0)
|
||||
metrics_label.set_style_bg_color(lv.color_black(), 0)
|
||||
metrics_label.set_style_bg_opa(lv.OPA.COVER, 0)
|
||||
metrics_label.set_pos(10, 10)
|
||||
metrics_label.set_text("Spinners: 0")
|
||||
timer = lv.timer_create(add_spinner_and_update, 2000, None)
|
||||
th.disable() # taskhandler control is necessary, otherwise there are concurrency issues
|
||||
while appscreen == lv.screen_active():
|
||||
lv.task_handler()
|
||||
time.sleep_ms(10)
|
||||
lv.tick_inc(10)
|
||||
th.enable()
|
||||
timer.delete()
|
||||
|
||||
try:
|
||||
run_benchmark()
|
||||
except Exception as e:
|
||||
print(f"Error in benchmark: {e}")
|
||||
def janitor_cb(timer):
|
||||
if lv.screen_active() != appscreen:
|
||||
print("lvgltest.py lost foreground, cleaning up...")
|
||||
janitor.delete()
|
||||
add_spinner_timer.delete()
|
||||
|
||||
appscreen = lv.screen_active()
|
||||
metrics_label = lv.label(appscreen)
|
||||
metrics_label.set_style_text_color(lv.color_white(), 0)
|
||||
metrics_label.set_style_bg_color(lv.color_black(), 0)
|
||||
metrics_label.set_style_bg_opa(lv.OPA.COVER, 0)
|
||||
metrics_label.set_pos(10, 10)
|
||||
metrics_label.set_text("Spinners: 0")
|
||||
|
||||
print("Starting LVGL spinner benchmark...")
|
||||
janitor = lv.timer_create(janitor_cb, 500, None)
|
||||
add_spinner_timer = lv.timer_create(add_spinner, 2000, None)
|
||||
|
||||
print("lvgltest.py exiting")
|
||||
|
||||
Reference in New Issue
Block a user