Fix: add function for buffer flush notify. whole screen now draws

Fixes #14

Refs: #14
main
rkcf 2023-02-04 21:18:16 -06:00
parent f4f62a2a77
commit 1b9afed3d0
1 changed files with 10 additions and 2 deletions

View File

@ -279,6 +279,12 @@ static void ledc_init(void) {
ESP_ERROR_CHECK(ledc_channel_config(&ledc_gate_channel)); 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) { 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; esp_lcd_panel_handle_t panel_handle = (esp_lcd_panel_handle_t)drv->user_data;
int offsetx1 = area->x1; 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)); ESP_ERROR_CHECK(spi_bus_initialize(SPI2_HOST, &spi_cfg, SPI_DMA_CH_AUTO));
// Setup Panel IO // Setup Panel IO
static lv_disp_drv_t disp_drv;
esp_lcd_panel_io_handle_t lcd_io_handle = NULL; esp_lcd_panel_io_handle_t lcd_io_handle = NULL;
esp_lcd_panel_io_spi_config_t lcd_spi_config = { esp_lcd_panel_io_spi_config_t lcd_spi_config = {
.dc_gpio_num = LCD_DC_PIN, .dc_gpio_num = LCD_DC_PIN,
@ -332,7 +339,9 @@ static void display_init(void) {
.lcd_cmd_bits = 8, .lcd_cmd_bits = 8,
.lcd_param_bits = 8, .lcd_param_bits = 8,
.spi_mode = 0, .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)); 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); lv_disp_draw_buf_init(&disp_buf, buf1, buf2, LCD_H_RES * 80);
// Initialize display driver then register it // Initialize display driver then register it
static lv_disp_drv_t disp_drv;
lv_disp_drv_init(&disp_drv); lv_disp_drv_init(&disp_drv);
disp_drv.hor_res = LCD_H_RES; disp_drv.hor_res = LCD_H_RES;
disp_drv.ver_res = LCD_V_RES; disp_drv.ver_res = LCD_V_RES;