diff options
Diffstat (limited to 'meta-openembedded/meta-oe/recipes-graphics/lvgl/dialog-lvgl/0001-wayland-Switch-to-custom-timer-tick.patch')
-rw-r--r-- | meta-openembedded/meta-oe/recipes-graphics/lvgl/dialog-lvgl/0001-wayland-Switch-to-custom-timer-tick.patch | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lvgl/dialog-lvgl/0001-wayland-Switch-to-custom-timer-tick.patch b/meta-openembedded/meta-oe/recipes-graphics/lvgl/dialog-lvgl/0001-wayland-Switch-to-custom-timer-tick.patch new file mode 100644 index 0000000000..5149002ff5 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-graphics/lvgl/dialog-lvgl/0001-wayland-Switch-to-custom-timer-tick.patch @@ -0,0 +1,72 @@ +From 1d92e1854c19c06c553243d29170bb4d1a9e3863 Mon Sep 17 00:00:00 2001 +From: Marek Vasut <marex@denx.de> +Date: Tue, 9 May 2023 02:57:30 +0200 +Subject: [PATCH 1/2] wayland: Switch to custom timer tick + +The OE LVGL is configured to obtain timer tick from system timer +instead of using ad-hoc mechanisms to emulate timer tick using +threads or such. Use system timer to provide the tick. + +The tick handling implementation comes from: +https://github.com/lvgl/lv_port_linux_frame_buffer.git +as of commit adf2c4490e17a1b9ec1902cc412a24b3b8235c8e + +Upstream-Status: Inappropriate [Upstream repo is archived] +Signed-off-by: Marek Vasut <marex@denx.de> +--- + src/drivers/wayland.c | 24 ++++++++++++++++-------- + 1 file changed, 16 insertions(+), 8 deletions(-) + +diff --git a/src/drivers/wayland.c b/src/drivers/wayland.c +index 633dc18..bcebf4d 100644 +--- a/src/drivers/wayland.c ++++ b/src/drivers/wayland.c +@@ -6,6 +6,7 @@ + #if defined(USE_WAYLAND) && USE_WAYLAND + + #include <pthread.h> ++#include <sys/time.h> + #include <unistd.h> + + #include <lv_drivers/wayland/wayland.h> +@@ -18,13 +19,22 @@ + #define WAYLAND_VER_RES 320 + #endif + +-static void * tick_thread(void * data) ++uint32_t custom_tick_get(void) + { +- (void) data; +- while(true) { +- usleep(5 * 1000); +- lv_tick_inc(5); +- } ++ static uint64_t start_ms = 0; ++ if(start_ms == 0) { ++ struct timeval tv_start; ++ gettimeofday(&tv_start, NULL); ++ start_ms = (tv_start.tv_sec * 1000000 + tv_start.tv_usec) / 1000; ++ } ++ ++ struct timeval tv_now; ++ gettimeofday(&tv_now, NULL); ++ uint64_t now_ms; ++ now_ms = (tv_now.tv_sec * 1000000 + tv_now.tv_usec) / 1000; ++ ++ uint32_t time_ms = now_ms - start_ms; ++ return time_ms; + } + + +@@ -47,8 +57,6 @@ void hal_init(void) + + lv_group_t * g = lv_group_create(); + lv_group_set_default(g); +- static pthread_t hal_thread; +- pthread_create(&hal_thread, NULL, tick_thread, NULL); + } + + #endif +-- +2.39.2 + |