feat(cache): new cache framework (#5049)

Co-authored-by: _VIFEXTech <vifextech@foxmail.com>
This commit is contained in:
Benign X
2023-12-25 11:37:59 +08:00
committed by GitHub
parent 929bfdab33
commit a34f490394
47 changed files with 1924 additions and 1637 deletions

View File

@@ -15,7 +15,7 @@
#include "../../display/lv_display.h"
#include "../../draw/sw/lv_draw_sw.h"
#include "../../stdlib/lv_string.h"
#include "../../misc/cache/lv_cache.h"
/*********************
* DEFINES
*********************/
@@ -79,12 +79,11 @@ void lv_canvas_set_buffer(lv_obj_t * obj, void * buf, int32_t w, int32_t h, lv_c
const void * src = lv_image_get_src(obj);
if(src) {
lv_cache_lock();
lv_cache_invalidate_by_src(src, LV_CACHE_SRC_TYPE_POINTER);
lv_cache_unlock();
lv_image_cache_drop(src);
}
lv_image_set_src(obj, canvas->draw_buf);
lv_image_cache_drop(canvas->draw_buf);
}
void lv_canvas_set_draw_buf(lv_obj_t * obj, lv_draw_buf_t * draw_buf)
@@ -97,12 +96,11 @@ void lv_canvas_set_draw_buf(lv_obj_t * obj, lv_draw_buf_t * draw_buf)
const void * src = lv_image_get_src(obj);
if(src) {
lv_cache_lock();
lv_cache_invalidate_by_src(src, LV_CACHE_SRC_TYPE_POINTER);
lv_cache_unlock();
lv_image_cache_drop(src);
}
lv_image_set_src(obj, draw_buf);
lv_image_cache_drop(draw_buf);
}
void lv_canvas_set_px(lv_obj_t * obj, int32_t x, int32_t y, lv_color_t color, lv_opa_t opa)
@@ -385,9 +383,7 @@ static void lv_canvas_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj)
lv_canvas_t * canvas = (lv_canvas_t *)obj;
if(canvas->draw_buf == NULL) return;
lv_cache_lock();
lv_cache_invalidate_by_src(canvas->draw_buf, LV_CACHE_SRC_TYPE_POINTER);
lv_cache_unlock();
lv_image_cache_drop(&canvas->draw_buf);
}
#endif