summaryrefslogtreecommitdiff
path: root/app/src/display/main.c
diff options
context:
space:
mode:
authorPete Johanson <peter@peterjohanson.com>2020-12-03 22:53:54 -0500
committerPete Johanson <peter@peterjohanson.com>2020-12-06 22:47:21 -0500
commit7ea1892bbb146eb5ce4d8602c136fadb54d454c8 (patch)
treea222a8c0aaf81ae22e2223d54f22fddf6f81761f /app/src/display/main.c
parent0d80220e14200b38b3e244d9f24e8bd7b61768d2 (diff)
fix(display): All display updates in work thread.
* Make sure all LVGL access is from main work thread.
Diffstat (limited to 'app/src/display/main.c')
-rw-r--r--app/src/display/main.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/app/src/display/main.c b/app/src/display/main.c
index 001061f..d64fb2a 100644
--- a/app/src/display/main.c
+++ b/app/src/display/main.c
@@ -24,6 +24,17 @@ static lv_obj_t *screen;
__attribute__((weak)) lv_obj_t *zmk_display_status_screen() { return NULL; }
+void display_tick_cb(struct k_work *work) {
+ lv_tick_inc(10);
+ lv_task_handler();
+}
+
+K_WORK_DEFINE(display_tick_work, display_tick_cb);
+
+void display_timer_cb() { k_work_submit(&display_tick_work); }
+
+K_TIMER_DEFINE(display_timer, display_timer_cb, NULL);
+
int zmk_display_init() {
LOG_DBG("");
@@ -45,12 +56,8 @@ int zmk_display_init() {
lv_task_handler();
display_blanking_off(display);
+ k_timer_start(&display_timer, K_MSEC(10), K_MSEC(10));
+
LOG_DBG("");
return 0;
-}
-
-void zmk_display_task_handler() {
- lv_tick_inc(10);
- lv_task_handler();
- k_sleep(K_MSEC(10));
-}
+} \ No newline at end of file