From 1b9afed3d0dfc41ab085d88decb66a274491edb5 Mon Sep 17 00:00:00 2001 From: rkcf Date: Sat, 4 Feb 2023 21:18:16 -0600 Subject: [PATCH] Fix: add function for buffer flush notify. whole screen now draws Fixes #14 Refs: #14 --- main/esp32-sequencer.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/main/esp32-sequencer.c b/main/esp32-sequencer.c index 3e9c98c..475ffca 100644 --- a/main/esp32-sequencer.c +++ b/main/esp32-sequencer.c @@ -279,6 +279,12 @@ static void ledc_init(void) { ESP_ERROR_CHECK(ledc_channel_config(&ledc_gate_channel)); } +static bool lvgl_notify_flush_ready(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_io_event_data_t *edata, void *user_ctx) { + lv_disp_drv_t *disp_driver = (lv_disp_drv_t *)user_ctx; + lv_disp_flush_ready(disp_driver); + return false; +} + static void lvgl_flush_cb(lv_disp_drv_t *drv, const lv_area_t *area, lv_color_t *color_map) { esp_lcd_panel_handle_t panel_handle = (esp_lcd_panel_handle_t)drv->user_data; int offsetx1 = area->x1; @@ -324,6 +330,7 @@ static void display_init(void) { ESP_ERROR_CHECK(spi_bus_initialize(SPI2_HOST, &spi_cfg, SPI_DMA_CH_AUTO)); // Setup Panel IO + static lv_disp_drv_t disp_drv; esp_lcd_panel_io_handle_t lcd_io_handle = NULL; esp_lcd_panel_io_spi_config_t lcd_spi_config = { .dc_gpio_num = LCD_DC_PIN, @@ -332,7 +339,9 @@ static void display_init(void) { .lcd_cmd_bits = 8, .lcd_param_bits = 8, .spi_mode = 0, - .trans_queue_depth = 10 + .trans_queue_depth = 10, + .on_color_trans_done = lvgl_notify_flush_ready, + .user_ctx = &disp_drv }; ESP_ERROR_CHECK(esp_lcd_new_panel_io_spi((esp_lcd_spi_bus_handle_t)SPI2_HOST, &lcd_spi_config, &lcd_io_handle)); @@ -363,7 +372,6 @@ static void display_init(void) { lv_disp_draw_buf_init(&disp_buf, buf1, buf2, LCD_H_RES * 80); // Initialize display driver then register it - static lv_disp_drv_t disp_drv; lv_disp_drv_init(&disp_drv); disp_drv.hor_res = LCD_H_RES; disp_drv.ver_res = LCD_V_RES;