Hi,
I am migrating from lvgl v6 to lvgl v9.2.2.
I registered two buffers, p_buffer_a points to buffer_A and p_buffer_b points to buffer_B.
But now lvgl made the variable lv_display_t private.
Maybe i can access in some other way, perhaps a public function ?!
Register Lcd and touch drivers:
// disp driver register
lv_display_t* display = lv_display_create(480, 854);
lv_display_set_buffers(display, p_buffer_a, p_buffer_b, 480 * 854 * 2, LV_DISPLAY_RENDER_MODE_FULL);
lv_display_set_flush_cb(display, lcd_drv_display_flush);
// disp driver register
// touch driver register
lv_indev_t* indev = lv_indev_create();
lv_indev_set_type(indev, LV_INDEV_TYPE_POINTER);
lv_indev_set_read_cb(indev, touch_read);
// touch driver register
Function to lvgl v9.2.2
void lcd_drv_display_flush( lv_display_t* drv, const lv_area_t* area, uint8_t* color_map )
{
uint32_t length = (uint32_t) ( 2 * ( lv_area_get_width(area) * lv_area_get_height(area) ) );
printf( "\nlength= %lu\n", length );
if (color_map == p_buffer_a)
{
#if lvgl_buffer_psram
Cache_WriteBack_Addr( (uint32_t)p_buffer_a, length );
#endif
lcd_drv_lcd_write_pixels_a( length, area );
lv_disp_flush_ready( drv );
}
else if(color_map == p_buffer_b )
{
#if lvgl_buffer_psram
Cache_WriteBack_Addr( (uint32_t)p_buffer_b, length );
#endif
lcd_drv_lcd_write_pixels_b( length, area );
lv_disp_flush_ready( drv );
}
else
{
printf("bug");
return;
}
}
Function to lvgl v6: Worked function
void lcd_drv_display_flush( lv_disp_drv_t* drv, const lv_area_t* area, lv_color_t* color_map )
{
(void) color_map;
uint32_t length = (uint32_t) ( 2 * ( lv_area_get_width(area) * lv_area_get_height(area) ) );
printf( "\nlength= %lu\n", length );
if ( drv->buffer->buf_act == p_buffer_a )
{
#if lvgl_buffer_psram
Cache_WriteBack_Addr( (uint32_t)p_buffer_a, length );
#endif
lcd_drv_lcd_write_pixels_a( length, area );
lv_disp_flush_ready( drv );
}
else if ( drv->buffer->buf_act == p_buffer_b )
{
#if lvgl_buffer_psram
Cache_WriteBack_Addr( (uint32_t)p_buffer_b, length );
#endif
lcd_drv_lcd_write_pixels_b( length, area );
lv_disp_flush_ready( drv );
}
else
{
printf("bug");
return;
}
}
Questions:
Will the new function to lvgl v9.2.2 work ?
Is there a way i can read “drv->buffer->buf_act” ?
Thank’s.