feat(nuttx_image_cache): add configuration to use image cache heap for default heap (#7653)

This commit is contained in:
Benign X
2025-02-21 14:31:14 +08:00
committed by GitHub
parent 889f42be3f
commit 93cef1274a
4 changed files with 38 additions and 0 deletions

View File

@@ -1832,6 +1832,11 @@ menu "LVGL configuration"
depends on LV_USE_NUTTX
default n
config LV_NUTTX_DEFAULT_DRAW_BUF_USE_INDEPENDENT_IMAGE_HEAP
bool "Use independent image heap for default draw buffer"
depends on LV_USE_NUTTX_INDEPENDENT_IMAGE_HEAP
default n
config LV_USE_NUTTX_LIBUV
bool "Use uv loop to replace default timer loop and other fb/indev timers"
depends on LV_USE_NUTTX && LIBUV

View File

@@ -1155,6 +1155,9 @@
#if LV_USE_NUTTX
#define LV_USE_NUTTX_INDEPENDENT_IMAGE_HEAP 0
/** Use independent image heap for default draw buffer */
#define LV_NUTTX_DEFAULT_DRAW_BUF_USE_INDEPENDENT_IMAGE_HEAP 0
#define LV_USE_NUTTX_LIBUV 0
/** Use Nuttx custom init API to open window and handle touchscreen */

View File

@@ -44,6 +44,11 @@ typedef struct {
lv_draw_buf_malloc_cb malloc_cb;
lv_draw_buf_free_cb free_cb;
#if LV_NUTTX_DEFAULT_DRAW_BUF_USE_INDEPENDENT_IMAGE_HEAP
lv_draw_buf_malloc_cb malloc_cb_default;
lv_draw_buf_free_cb free_cb_default;
#endif
} lv_nuttx_ctx_image_cache_t;
/**********************
* STATIC PROTOTYPES
@@ -77,6 +82,15 @@ void lv_nuttx_image_cache_init(bool use_independent_image_heap)
handlers->buf_malloc_cb = malloc_cb;
handlers->buf_free_cb = free_cb;
#if LV_NUTTX_DEFAULT_DRAW_BUF_USE_INDEPENDENT_IMAGE_HEAP
handlers = lv_draw_buf_get_handlers();
ctx->malloc_cb_default = handlers->buf_malloc_cb;
ctx->free_cb_default = handlers->buf_free_cb;
handlers->buf_malloc_cb = malloc_cb;
handlers->buf_free_cb = free_cb;
#endif
ctx->initialized = false;
ctx->independent_image_heap = use_independent_image_heap;
}
@@ -93,6 +107,13 @@ FREE_CONTEXT:
lv_draw_buf_handlers_t * handlers = image_cache_draw_buf_handlers;
handlers->buf_malloc_cb = ctx->malloc_cb;
handlers->buf_free_cb = ctx->free_cb;
#if LV_NUTTX_DEFAULT_DRAW_BUF_USE_INDEPENDENT_IMAGE_HEAP
handlers = lv_draw_buf_get_handlers();
handlers->buf_malloc_cb = ctx->malloc_cb_default;
handlers->buf_free_cb = ctx->free_cb_default;
#endif
lv_free(ctx);
ctx = NULL;

View File

@@ -3730,6 +3730,15 @@
#endif
#endif
/** Use independent image heap for default draw buffer */
#ifndef LV_NUTTX_DEFAULT_DRAW_BUF_USE_INDEPENDENT_IMAGE_HEAP
#ifdef CONFIG_LV_NUTTX_DEFAULT_DRAW_BUF_USE_INDEPENDENT_IMAGE_HEAP
#define LV_NUTTX_DEFAULT_DRAW_BUF_USE_INDEPENDENT_IMAGE_HEAP CONFIG_LV_NUTTX_DEFAULT_DRAW_BUF_USE_INDEPENDENT_IMAGE_HEAP
#else
#define LV_NUTTX_DEFAULT_DRAW_BUF_USE_INDEPENDENT_IMAGE_HEAP 0
#endif
#endif
#ifndef LV_USE_NUTTX_LIBUV
#ifdef CONFIG_LV_USE_NUTTX_LIBUV
#define LV_USE_NUTTX_LIBUV CONFIG_LV_USE_NUTTX_LIBUV