mirror of
https://github.com/lvgl/lvgl.git
synced 2025-01-28 07:03:00 +08:00
commit
0dde2937d7
@ -14,6 +14,11 @@
|
||||
#include "../lv_misc/lv_log.h"
|
||||
#include "../lv_misc/lv_math.h"
|
||||
#include "../lv_misc/lv_mem.h"
|
||||
#include "../lv_misc/lv_gc.h"
|
||||
|
||||
#if defined(LV_GC_INCLUDE)
|
||||
#include LV_GC_INCLUDE
|
||||
#endif /* LV_ENABLE_GC */
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
@ -30,7 +35,6 @@
|
||||
/**********************
|
||||
* STATIC VARIABLES
|
||||
**********************/
|
||||
static void * draw_buf = NULL;
|
||||
static uint32_t draw_buf_size = 0;
|
||||
|
||||
/**********************
|
||||
@ -48,21 +52,21 @@ static uint32_t draw_buf_size = 0;
|
||||
*/
|
||||
void * lv_draw_get_buf(uint32_t size)
|
||||
{
|
||||
if(size <= draw_buf_size) return draw_buf;
|
||||
if(size <= draw_buf_size) return LV_GC_ROOT(_lv_draw_buf);
|
||||
|
||||
LV_LOG_TRACE("lv_draw_get_buf: allocate");
|
||||
|
||||
draw_buf_size = size;
|
||||
|
||||
if(draw_buf == NULL) {
|
||||
draw_buf = lv_mem_alloc(size);
|
||||
lv_mem_assert(draw_buf);
|
||||
return draw_buf;
|
||||
if(LV_GC_ROOT(_lv_draw_buf) == NULL) {
|
||||
LV_GC_ROOT(_lv_draw_buf) = lv_mem_alloc(size);
|
||||
lv_mem_assert(LV_GC_ROOT(_lv_draw_buf));
|
||||
return LV_GC_ROOT(_lv_draw_buf);
|
||||
}
|
||||
|
||||
draw_buf = lv_mem_realloc(draw_buf, size);
|
||||
lv_mem_assert(draw_buf);
|
||||
return draw_buf;
|
||||
LV_GC_ROOT(_lv_draw_buf) = lv_mem_realloc(LV_GC_ROOT(_lv_draw_buf), size);
|
||||
lv_mem_assert(LV_GC_ROOT(_lv_draw_buf));
|
||||
return LV_GC_ROOT(_lv_draw_buf);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -70,9 +74,9 @@ void * lv_draw_get_buf(uint32_t size)
|
||||
*/
|
||||
void lv_draw_free_buf(void)
|
||||
{
|
||||
if(draw_buf) {
|
||||
lv_mem_free(draw_buf);
|
||||
draw_buf = NULL;
|
||||
if(LV_GC_ROOT(_lv_draw_buf)) {
|
||||
lv_mem_free(LV_GC_ROOT(_lv_draw_buf));
|
||||
LV_GC_ROOT(_lv_draw_buf) = NULL;
|
||||
draw_buf_size = 0;
|
||||
}
|
||||
}
|
||||
|
@ -40,7 +40,8 @@ extern "C" {
|
||||
prefix lv_ll_t _lv_group_ll; \
|
||||
prefix lv_ll_t _lv_img_defoder_ll; \
|
||||
prefix lv_img_cache_entry_t * _lv_img_cache_array; \
|
||||
prefix void * _lv_task_act;
|
||||
prefix void * _lv_task_act; \
|
||||
prefix void * _lv_draw_buf;
|
||||
|
||||
#define LV_NO_PREFIX
|
||||
#define LV_ROOTS LV_GC_ROOTS(LV_NO_PREFIX)
|
||||
|
Loading…
x
Reference in New Issue
Block a user