From 0082bd6b8e4dd1361520da4b608a3d8cd22d8217 Mon Sep 17 00:00:00 2001 From: Nurdism Date: Wed, 6 Aug 2025 23:57:27 -0400 Subject: [PATCH 1/6] feat(esp_lvgl_port): Add rounder_cb option for displays --- components/esp_lvgl_port/include/esp_lvgl_port_disp.h | 8 ++++++++ components/esp_lvgl_port/src/lvgl9/esp_lvgl_port_disp.c | 6 ++++++ 2 files changed, 14 insertions(+) diff --git a/components/esp_lvgl_port/include/esp_lvgl_port_disp.h b/components/esp_lvgl_port/include/esp_lvgl_port_disp.h index a82728703..55d442af3 100644 --- a/components/esp_lvgl_port/include/esp_lvgl_port_disp.h +++ b/components/esp_lvgl_port/include/esp_lvgl_port_disp.h @@ -33,6 +33,13 @@ typedef struct { bool mirror_y; /*!< LCD Screen mirrored Y (in esp_lcd driver) */ } lvgl_port_rotation_cfg_t; +#if LVGL_VERSION_MAJOR >= 9 +/** + * @brief Rounder callback + */ +typedef void (*lvgl_port_rounder_cb_t)(lv_area_t *area); +#endif + /** * @brief Configuration display structure */ @@ -53,6 +60,7 @@ typedef struct { lvgl_port_rotation_cfg_t rotation; /*!< Default values of the screen rotation (Only HW state. Not supported for default SW rotation!) */ #if LVGL_VERSION_MAJOR >= 9 lv_color_format_t color_format; /*!< The color format of the display */ + lvgl_port_rounder_cb_t rounder_cb; /*!< Rounder callback for display area */ #endif struct { unsigned int buff_dma: 1; /*!< Allocated LVGL buffer will be DMA capable */ diff --git a/components/esp_lvgl_port/src/lvgl9/esp_lvgl_port_disp.c b/components/esp_lvgl_port/src/lvgl9/esp_lvgl_port_disp.c index a5a07d7f3..7f0db9d58 100644 --- a/components/esp_lvgl_port/src/lvgl9/esp_lvgl_port_disp.c +++ b/components/esp_lvgl_port/src/lvgl9/esp_lvgl_port_disp.c @@ -749,6 +749,12 @@ static void lvgl_port_disp_size_update_callback(lv_event_t *e) static void lvgl_port_display_invalidate_callback(lv_event_t *e) { + lvgl_port_display_ctx_t *disp_ctx = (lvgl_port_display_ctx_t *)lv_event_get_user_data(e); + lv_area_t *area = (lv_area_t *)lv_event_get_param(e); + if (area != NULL && disp_ctx != NULL && disp_ctx->rounder_cb != NULL) { + disp_ctx->rounder_cb(area); + } + /* Wake LVGL task, if needed */ lvgl_port_task_wake(LVGL_PORT_EVENT_DISPLAY, NULL); } From d2d1bc7cd32ea936965a76a4e09d89a1bf5ab55a Mon Sep 17 00:00:00 2001 From: Nurdism Date: Thu, 7 Aug 2025 00:05:20 -0400 Subject: [PATCH 2/6] chore(docs): Changelog, Readme and version bump --- components/esp_lvgl_port/CHANGELOG.md | 4 +++- components/esp_lvgl_port/README.md | 1 + components/esp_lvgl_port/idf_component.yml | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/components/esp_lvgl_port/CHANGELOG.md b/components/esp_lvgl_port/CHANGELOG.md index e4d304cc9..3b1d30ac5 100644 --- a/components/esp_lvgl_port/CHANGELOG.md +++ b/components/esp_lvgl_port/CHANGELOG.md @@ -1,8 +1,10 @@ # Changelog -## [Unreleased] +## 2.7.0 + ### Features - Added option to place LVGL task stack to external RAM +- Added option to inclide a rounder callback for LVGL 9 ## 2.6.0 diff --git a/components/esp_lvgl_port/README.md b/components/esp_lvgl_port/README.md index cbdff862e..75b8ebdeb 100644 --- a/components/esp_lvgl_port/README.md +++ b/components/esp_lvgl_port/README.md @@ -64,6 +64,7 @@ Add an LCD screen to the LVGL. It can be called multiple times for adding multip .monochrome = false, .mipi_dsi = false, .color_format = LV_COLOR_FORMAT_RGB565, + .rounder_cb = my_rounder_cb, // for LVGL9 .rotation = { .swap_xy = false, .mirror_x = false, diff --git a/components/esp_lvgl_port/idf_component.yml b/components/esp_lvgl_port/idf_component.yml index d9cf83d6f..7ee623121 100644 --- a/components/esp_lvgl_port/idf_component.yml +++ b/components/esp_lvgl_port/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.6.0" +version: "2.7.0" description: ESP LVGL port url: https://github.com/espressif/esp-bsp/tree/master/components/esp_lvgl_port dependencies: From f569a32217234e5b8a8c2c17e0b0e9c9f7853870 Mon Sep 17 00:00:00 2001 From: Nurdism Date: Thu, 7 Aug 2025 00:09:29 -0400 Subject: [PATCH 3/6] chore(docs): Fix typo --- components/esp_lvgl_port/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/esp_lvgl_port/CHANGELOG.md b/components/esp_lvgl_port/CHANGELOG.md index 3b1d30ac5..033ef16e9 100644 --- a/components/esp_lvgl_port/CHANGELOG.md +++ b/components/esp_lvgl_port/CHANGELOG.md @@ -4,7 +4,7 @@ ### Features - Added option to place LVGL task stack to external RAM -- Added option to inclide a rounder callback for LVGL 9 +- Added option to include a rounder callback for LVGL 9 ## 2.6.0 From 304a03cbb7b153735a4ba9646611fbe39b8d478b Mon Sep 17 00:00:00 2001 From: Vilem Zavodny <98878239+espzav@users.noreply.github.com> Date: Wed, 3 Dec 2025 12:52:45 +0100 Subject: [PATCH 4/6] Fix formatting in README for rounder_cb --- components/esp_lvgl_port/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/esp_lvgl_port/README.md b/components/esp_lvgl_port/README.md index 7a513e785..5b05e6afd 100644 --- a/components/esp_lvgl_port/README.md +++ b/components/esp_lvgl_port/README.md @@ -64,7 +64,7 @@ Add an LCD screen to the LVGL. It can be called multiple times for adding multip .monochrome = false, .mipi_dsi = false, .color_format = LV_COLOR_FORMAT_RGB565, - .rounder_cb = my_rounder_cb, // for LVGL9 + .rounder_cb = my_rounder_cb, .rotation = { .swap_xy = false, .mirror_x = false, From c3c5219da8622b027d6ec2fa61ba12e8dd12e71d Mon Sep 17 00:00:00 2001 From: Vilem Zavodny <98878239+espzav@users.noreply.github.com> Date: Wed, 3 Dec 2025 12:53:35 +0100 Subject: [PATCH 5/6] Refactor rounder callback definition in header --- components/esp_lvgl_port/include/esp_lvgl_port_disp.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/components/esp_lvgl_port/include/esp_lvgl_port_disp.h b/components/esp_lvgl_port/include/esp_lvgl_port_disp.h index 55d442af3..a8ef3e418 100644 --- a/components/esp_lvgl_port/include/esp_lvgl_port_disp.h +++ b/components/esp_lvgl_port/include/esp_lvgl_port_disp.h @@ -33,12 +33,10 @@ typedef struct { bool mirror_y; /*!< LCD Screen mirrored Y (in esp_lcd driver) */ } lvgl_port_rotation_cfg_t; -#if LVGL_VERSION_MAJOR >= 9 /** * @brief Rounder callback */ typedef void (*lvgl_port_rounder_cb_t)(lv_area_t *area); -#endif /** * @brief Configuration display structure @@ -58,9 +56,9 @@ typedef struct { bool monochrome; /*!< True, if display is monochrome and using 1bit for 1px */ lvgl_port_rotation_cfg_t rotation; /*!< Default values of the screen rotation (Only HW state. Not supported for default SW rotation!) */ + lvgl_port_rounder_cb_t rounder_cb; /*!< Rounder callback for display area */ #if LVGL_VERSION_MAJOR >= 9 lv_color_format_t color_format; /*!< The color format of the display */ - lvgl_port_rounder_cb_t rounder_cb; /*!< Rounder callback for display area */ #endif struct { unsigned int buff_dma: 1; /*!< Allocated LVGL buffer will be DMA capable */ From 6b8ad7d7b7a9c16466a1e6d7e00ebfa729c9b3e0 Mon Sep 17 00:00:00 2001 From: Vilem Zavodny <98878239+espzav@users.noreply.github.com> Date: Wed, 3 Dec 2025 12:55:48 +0100 Subject: [PATCH 6/6] Update CHANGELOG with new feature and fixes Added option to include a rounder callback for LVGL 9. --- components/esp_lvgl_port/CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/esp_lvgl_port/CHANGELOG.md b/components/esp_lvgl_port/CHANGELOG.md index b3efe6b57..75712b475 100644 --- a/components/esp_lvgl_port/CHANGELOG.md +++ b/components/esp_lvgl_port/CHANGELOG.md @@ -3,8 +3,8 @@ ## [Unreleased] ### Features -- Added option to include a rounder callback for LVGL 9 -- +- Added option to include a rounder callback + ### Fixes - Fixed deinitialization of the task which was created with caps - https://github.com/espressif/esp-bsp/issues/680 - Call lv_deinit() - https://github.com/espressif/esp-bsp/issues/635