improve mutable_image

This commit is contained in:
lixianjing 2025-04-17 11:57:46 +08:00
parent 0e744552bc
commit 57e7c2e10e
3 changed files with 8 additions and 3 deletions

View File

@ -1,5 +1,8 @@
# 最新动态
2025/04/17
* 修改mutable_image的need_redraw的机制(感谢智明提供补丁)
2025/04/16
* 完善tk_swap(感谢兆坤提供补丁)。
* 修复nanovg_plus处理vgcanvas_paint图片的时候有概率图像异常的问题和增加获取当前画布宽高以及修复画弧为360的时候变成0度的问题(感谢智明提供补丁)

View File

@ -75,12 +75,12 @@ ret_t mutable_image_on_paint_self(widget_t* widget, canvas_t* canvas) {
mutable_image_t* mutable_image = MUTABLE_IMAGE(widget);
ENSURE(mutable_image);
if (mutable_image->need_redraw != NULL &&
!mutable_image->need_redraw(mutable_image->need_redraw_ctx)) {
if (!mutable_image->is_need_redraw) {
bitmap = mutable_image->user_image != NULL ? mutable_image->user_image : mutable_image->image;
} else {
bitmap = mutable_image->user_image != NULL ? mutable_image->user_image
: mutable_image_prepare_image(widget, canvas);
mutable_image->is_need_redraw = FALSE;
}
if (bitmap == NULL) {
@ -190,6 +190,7 @@ static ret_t mutable_image_invalidate(const timer_info_t* info) {
if (mutable_image->need_redraw == NULL ||
mutable_image->need_redraw(mutable_image->need_redraw_ctx)) {
mutable_image->is_need_redraw = TRUE;
widget_invalidate_force(WIDGET(info->ctx), NULL);
}

View File

@ -77,6 +77,7 @@ typedef struct _mutable_image_t {
image_base_t image_base;
/*private*/
bool_t is_need_redraw;
uint32_t timer_id;
void* prepare_image_ctx;
mutable_image_prepare_image_t prepare_image;
@ -110,7 +111,7 @@ widget_t* mutable_image_create(widget_t* parent, xy_t x, xy_t y, wh_t w, wh_t h)
/**
* @method mutable_image_set_need_redraw
* need_redraw回调函数
*
* mutable_image_set_prepare_image
* 16ms刷新一次
*
* @param {widget_t*} widget mutable_image对象