diff options
3 files changed, 107 insertions, 2 deletions
diff --git a/meta-oe/recipes-graphics/lvgl/dialog-lvgl/0001-wayland-Switch-to-custom-timer-tick.patch b/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-oe/recipes-graphics/lvgl/dialog-lvgl/0001-wayland-Switch-to-custom-timer-tick.patch | |||
@@ -0,0 +1,72 @@ | |||
1 | From 1d92e1854c19c06c553243d29170bb4d1a9e3863 Mon Sep 17 00:00:00 2001 | ||
2 | From: Marek Vasut <marex@denx.de> | ||
3 | Date: Tue, 9 May 2023 02:57:30 +0200 | ||
4 | Subject: [PATCH 1/2] wayland: Switch to custom timer tick | ||
5 | |||
6 | The OE LVGL is configured to obtain timer tick from system timer | ||
7 | instead of using ad-hoc mechanisms to emulate timer tick using | ||
8 | threads or such. Use system timer to provide the tick. | ||
9 | |||
10 | The tick handling implementation comes from: | ||
11 | https://github.com/lvgl/lv_port_linux_frame_buffer.git | ||
12 | as of commit adf2c4490e17a1b9ec1902cc412a24b3b8235c8e | ||
13 | |||
14 | Upstream-Status: Inappropriate [Upstream repo is archived] | ||
15 | Signed-off-by: Marek Vasut <marex@denx.de> | ||
16 | --- | ||
17 | src/drivers/wayland.c | 24 ++++++++++++++++-------- | ||
18 | 1 file changed, 16 insertions(+), 8 deletions(-) | ||
19 | |||
20 | diff --git a/src/drivers/wayland.c b/src/drivers/wayland.c | ||
21 | index 633dc18..bcebf4d 100644 | ||
22 | --- a/src/drivers/wayland.c | ||
23 | +++ b/src/drivers/wayland.c | ||
24 | @@ -6,6 +6,7 @@ | ||
25 | #if defined(USE_WAYLAND) && USE_WAYLAND | ||
26 | |||
27 | #include <pthread.h> | ||
28 | +#include <sys/time.h> | ||
29 | #include <unistd.h> | ||
30 | |||
31 | #include <lv_drivers/wayland/wayland.h> | ||
32 | @@ -18,13 +19,22 @@ | ||
33 | #define WAYLAND_VER_RES 320 | ||
34 | #endif | ||
35 | |||
36 | -static void * tick_thread(void * data) | ||
37 | +uint32_t custom_tick_get(void) | ||
38 | { | ||
39 | - (void) data; | ||
40 | - while(true) { | ||
41 | - usleep(5 * 1000); | ||
42 | - lv_tick_inc(5); | ||
43 | - } | ||
44 | + static uint64_t start_ms = 0; | ||
45 | + if(start_ms == 0) { | ||
46 | + struct timeval tv_start; | ||
47 | + gettimeofday(&tv_start, NULL); | ||
48 | + start_ms = (tv_start.tv_sec * 1000000 + tv_start.tv_usec) / 1000; | ||
49 | + } | ||
50 | + | ||
51 | + struct timeval tv_now; | ||
52 | + gettimeofday(&tv_now, NULL); | ||
53 | + uint64_t now_ms; | ||
54 | + now_ms = (tv_now.tv_sec * 1000000 + tv_now.tv_usec) / 1000; | ||
55 | + | ||
56 | + uint32_t time_ms = now_ms - start_ms; | ||
57 | + return time_ms; | ||
58 | } | ||
59 | |||
60 | |||
61 | @@ -47,8 +57,6 @@ void hal_init(void) | ||
62 | |||
63 | lv_group_t * g = lv_group_create(); | ||
64 | lv_group_set_default(g); | ||
65 | - static pthread_t hal_thread; | ||
66 | - pthread_create(&hal_thread, NULL, tick_thread, NULL); | ||
67 | } | ||
68 | |||
69 | #endif | ||
70 | -- | ||
71 | 2.39.2 | ||
72 | |||
diff --git a/meta-oe/recipes-graphics/lvgl/dialog-lvgl/0002-wayland-Fix-callback-data-type.patch b/meta-oe/recipes-graphics/lvgl/dialog-lvgl/0002-wayland-Fix-callback-data-type.patch new file mode 100644 index 0000000000..8919a1a2ad --- /dev/null +++ b/meta-oe/recipes-graphics/lvgl/dialog-lvgl/0002-wayland-Fix-callback-data-type.patch | |||
@@ -0,0 +1,30 @@ | |||
1 | From b7af695d79820adf53e7d612120bda12ed2886e2 Mon Sep 17 00:00:00 2001 | ||
2 | From: Marek Vasut <marex@denx.de> | ||
3 | Date: Tue, 9 May 2023 02:57:38 +0200 | ||
4 | Subject: [PATCH 2/2] wayland: Fix callback data type | ||
5 | |||
6 | The LVGL 8.3.y changed the callback data type, update it accordingly. | ||
7 | |||
8 | Upstream-Status: Inappropriate [Upstream repo is archived] | ||
9 | Signed-off-by: Marek Vasut <marex@denx.de> | ||
10 | --- | ||
11 | src/drivers/wayland.c | 3 +-- | ||
12 | 1 file changed, 1 insertion(+), 2 deletions(-) | ||
13 | |||
14 | diff --git a/src/drivers/wayland.c b/src/drivers/wayland.c | ||
15 | index bcebf4d..cfefa88 100644 | ||
16 | --- a/src/drivers/wayland.c | ||
17 | +++ b/src/drivers/wayland.c | ||
18 | @@ -37,8 +37,7 @@ uint32_t custom_tick_get(void) | ||
19 | return time_ms; | ||
20 | } | ||
21 | |||
22 | - | ||
23 | -static lv_wayland_display_close_f_t close_cb() | ||
24 | +static bool close_cb(lv_disp_t * disp) | ||
25 | { | ||
26 | } | ||
27 | |||
28 | -- | ||
29 | 2.39.2 | ||
30 | |||
diff --git a/meta-oe/recipes-graphics/lvgl/dialog-lvgl_git.bb b/meta-oe/recipes-graphics/lvgl/dialog-lvgl_git.bb index 7e24c51f28..9e820d0dbf 100644 --- a/meta-oe/recipes-graphics/lvgl/dialog-lvgl_git.bb +++ b/meta-oe/recipes-graphics/lvgl/dialog-lvgl_git.bb | |||
@@ -1,8 +1,11 @@ | |||
1 | # SPDX-FileCopyrightText: Huawei Inc. | 1 | # SPDX-FileCopyrightText: Huawei Inc. |
2 | # SPDX-License-Identifier: MIT | 2 | # SPDX-License-Identifier: MIT |
3 | 3 | ||
4 | SRC_URI = "gitsm://git.ostc-eu.org/rzr/dialog-lvgl;destsuffix=${S};protocol=https;nobranch=1" | 4 | SRC_URI = "git://git.ostc-eu.org/rzr/dialog-lvgl;destsuffix=${S};protocol=https;nobranch=1 \ |
5 | SRCREV = "5d2121457a6988c97cacb0790594440693fc3d29" | 5 | file://0001-wayland-Switch-to-custom-timer-tick.patch \ |
6 | file://0002-wayland-Fix-callback-data-type.patch \ | ||
7 | " | ||
8 | SRCREV = "cdf8d38acca87e871c3a488fd07f1e4779590f8e" | ||
6 | 9 | ||
7 | LICENSE = "MIT" | 10 | LICENSE = "MIT" |
8 | LIC_FILES_CHKSUM = "file://LICENSE;md5=8ce0a84e5276f01364119c873b712c4f" | 11 | LIC_FILES_CHKSUM = "file://LICENSE;md5=8ce0a84e5276f01364119c873b712c4f" |