fix(vg_lite): add grad image buffer check (#5552)

Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
This commit is contained in:
_VIFEXTech
2024-02-01 15:45:46 +08:00
committed by GitHub
parent 3c1a76506e
commit 4ce16055e7
+23 -10
View File
@@ -819,18 +819,27 @@ bool lv_vg_lite_buffer_check(const vg_lite_buffer_t * buffer, bool is_src)
return false;
}
if(!(buffer->image_mode == VG_LITE_NORMAL_IMAGE_MODE
|| buffer->image_mode == VG_LITE_NONE_IMAGE_MODE
|| buffer->image_mode == VG_LITE_MULTIPLY_IMAGE_MODE)) {
LV_LOG_ERROR("buffer image_mode(%d) is invalid", (int)buffer->image_mode);
return false;
switch(buffer->image_mode) {
case VG_LITE_ZERO:
case VG_LITE_NORMAL_IMAGE_MODE:
case VG_LITE_MULTIPLY_IMAGE_MODE:
case VG_LITE_STENCIL_MODE:
case VG_LITE_NONE_IMAGE_MODE:
case VG_LITE_RECOLOR_MODE:
break;
default:
LV_LOG_ERROR("buffer image_mode(%d) is invalid", (int)buffer->image_mode);
return false;
}
if(!(buffer->transparency_mode == VG_LITE_IMAGE_OPAQUE
|| buffer->transparency_mode == VG_LITE_IMAGE_TRANSPARENT)) {
LV_LOG_ERROR("buffer transparency_mode(%d) is invalid",
(int)buffer->transparency_mode);
return false;
switch(buffer->transparency_mode) {
case VG_LITE_IMAGE_OPAQUE:
case VG_LITE_IMAGE_TRANSPARENT:
break;
default:
LV_LOG_ERROR("buffer transparency_mode(%d) is invalid",
(int)buffer->transparency_mode);
return false;
}
return true;
@@ -960,6 +969,10 @@ void lv_vg_lite_draw_linear_grad(
vg_lite_scale(lv_area_get_width(area) / 256.0f, 1, grad_matrix);
}
LV_VG_LITE_ASSERT_DEST_BUFFER(buffer);
LV_VG_LITE_ASSERT_SRC_BUFFER(&gradient.image);
LV_VG_LITE_ASSERT_PATH(path);
LV_PROFILER_BEGIN_TAG("vg_lite_draw_grad");
LV_VG_LITE_CHECK_ERROR(vg_lite_draw_grad(
buffer,