From fe76cc23cfbf843f8e89f4c6dce8fba8631d0b2a Mon Sep 17 00:00:00 2001 From: bryghtlabs-richard <146753361+bryghtlabs-richard@users.noreply.github.com> Date: Tue, 19 May 2026 13:47:53 -0500 Subject: [PATCH] feat(display): add get display flush cb (#10072) --- include/lvgl/display/lv_display.h | 7 +++++++ src/display/lv_display.c | 8 ++++++++ tests/src/test_cases/test_display.c | 2 ++ 3 files changed, 17 insertions(+) diff --git a/include/lvgl/display/lv_display.h b/include/lvgl/display/lv_display.h index 7472df77f8..94dc8990cb 100644 --- a/include/lvgl/display/lv_display.h +++ b/include/lvgl/display/lv_display.h @@ -315,6 +315,13 @@ void lv_display_set_render_mode(lv_display_t * disp, lv_display_render_mode_t re */ void lv_display_set_flush_cb(lv_display_t * disp, lv_display_flush_cb_t flush_cb); +/** + * Get the flush callback which will be called to copy the rendered image to the display. + * @param disp pointer to a display + * @return the flush callback + */ +lv_display_flush_cb_t lv_display_get_flush_cb(lv_display_t * disp); + /** * Set a callback to be used while LVGL is waiting flushing to be finished. * It can do any complex logic to wait, including semaphores, mutexes, polling flags, etc. diff --git a/src/display/lv_display.c b/src/display/lv_display.c index 35b9aa5842..2089338f12 100644 --- a/src/display/lv_display.c +++ b/src/display/lv_display.c @@ -556,6 +556,14 @@ void lv_display_set_render_mode(lv_display_t * disp, lv_display_render_mode_t re disp->render_mode = render_mode; } + +lv_display_flush_cb_t lv_display_get_flush_cb(lv_display_t * disp) +{ + if(disp == NULL) disp = lv_display_get_default(); + if(disp == NULL) return NULL; + return disp->flush_cb; +} + void lv_display_set_flush_cb(lv_display_t * disp, lv_display_flush_cb_t flush_cb) { if(disp == NULL) disp = lv_display_get_default(); diff --git a/tests/src/test_cases/test_display.c b/tests/src/test_cases/test_display.c index 1024aad89b..ca17bcd632 100644 --- a/tests/src/test_cases/test_display.c +++ b/tests/src/test_cases/test_display.c @@ -235,6 +235,8 @@ void test_display_triple_buffer(void) { lv_display_t * disp = lv_display_create(480, 320); lv_display_set_flush_cb(disp, dummy_flush_cb); + TEST_ASSERT_EQUAL_PTR(lv_display_get_flush_cb(disp), dummy_flush_cb); + lv_draw_buf_t * buf1 = lv_draw_buf_create(480, 320, LV_COLOR_FORMAT_NATIVE, 0); lv_draw_buf_t * buf2 = lv_draw_buf_create(480, 320, LV_COLOR_FORMAT_NATIVE, 0); lv_draw_buf_t * buf3 = lv_draw_buf_create(480, 320, LV_COLOR_FORMAT_NATIVE, 0);