diff --git a/examples/lvgldemo/Kconfig b/examples/lvgldemo/Kconfig index b62abf6d5..2b2344d4c 100644 --- a/examples/lvgldemo/Kconfig +++ b/examples/lvgldemo/Kconfig @@ -22,6 +22,18 @@ config EXAMPLES_LVGLDEMO_BUFF_SIZE int "Display buffer size (in line)" default 20 +config EXAMPLES_LVGLDEMO_DOUBLE_BUFFERING + bool "Enable double buffering" + default n + ---help--- + When double buffering is enabled, LVGL expects the size of both + buffers as: + CONFIG_LV_HOR_RES * CONFIG_EXAMPLES_LVGLDEMO_BUFF_SIZE. + True double buffering support is enabled if both buffers have the + same dimensions as the display device resolution. Otherwise, + LVGL will perform a number of partial refreshes according to the + defined buffer size. + config EXAMPLES_LVGLDEMO_ASYNC_FLUSH bool "Flush the display buffer asynchronously" default n diff --git a/examples/lvgldemo/lvgldemo.c b/examples/lvgldemo/lvgldemo.c index 855a2fd81..d0ad1f574 100644 --- a/examples/lvgldemo/lvgldemo.c +++ b/examples/lvgldemo/lvgldemo.c @@ -41,8 +41,8 @@ #include #include +#include #include -#include #include #include @@ -52,10 +52,8 @@ #include "lcddev.h" #ifdef CONFIG_INPUT - #include "tp.h" #include "tp_cal.h" - #endif /**************************************************************************** @@ -112,7 +110,13 @@ static void monitor_cb(lv_disp_drv_t * disp_drv, uint32_t time, uint32_t px) * Private Data ****************************************************************************/ -static lv_color_t buf[DISPLAY_BUFFER_SIZE]; +static lv_color_t buffer1[DISPLAY_BUFFER_SIZE]; + +#ifdef CONFIG_EXAMPLES_LVGLDEMO_DOUBLE_BUFFERING +static lv_color_t buffer2[DISPLAY_BUFFER_SIZE]; +#else +# define buffer2 NULL +#endif /**************************************************************************** * Public Functions @@ -178,7 +182,7 @@ int main(int argc, FAR char *argv[]) /* Basic LVGL display driver initialization */ - lv_disp_buf_init(&disp_buf, buf, NULL, DISPLAY_BUFFER_SIZE); + lv_disp_buf_init(&disp_buf, buffer1, buffer2, DISPLAY_BUFFER_SIZE); lv_disp_drv_init(&disp_drv); disp_drv.buffer = &disp_buf; disp_drv.monitor_cb = monitor_cb; @@ -200,7 +204,6 @@ int main(int argc, FAR char *argv[]) lv_disp_drv_register(&disp_drv); #ifdef CONFIG_INPUT - /* Touchpad Initialization */ tp_init(); @@ -214,7 +217,6 @@ int main(int argc, FAR char *argv[]) indev_drv.read_cb = tp_read; lv_indev_drv_register(&indev_drv); - #endif #if defined(CONFIG_EXAMPLES_LVGLDEMO_BENCHMARK) @@ -228,7 +230,6 @@ int main(int argc, FAR char *argv[]) #endif #ifdef CONFIG_INPUT - /* Start TP calibration */ #ifdef CONFIG_EXAMPLES_LVGLDEMO_CALIBRATE @@ -236,7 +237,6 @@ int main(int argc, FAR char *argv[]) #else tp_set_cal_values(p, p + 1, p + 2, p + 3); #endif - #endif /* Handle LVGL tasks */