mirror of
https://github.com/lvgl/lvgl.git
synced 2026-05-20 04:11:36 +08:00
fix(SVG): fix SVG decoder memory leak. close decoder (#8658)
This commit is contained in:
@@ -180,6 +180,8 @@ void lv_draw_image(lv_layer_t * layer, const lv_draw_image_dsc_t * dsc, const lv
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
lv_image_decoder_close(&decoder_dsc);
|
||||
}
|
||||
|
||||
LV_PROFILER_DRAW_END;
|
||||
|
||||
@@ -27,7 +27,7 @@ static void assert_screenshot(const char * path)
|
||||
#endif
|
||||
}
|
||||
|
||||
void test_svg_decoder(void)
|
||||
void svg_decoder(void)
|
||||
{
|
||||
LV_IMAGE_DECLARE(test_image_svg);
|
||||
lv_obj_t * img = lv_image_create(lv_screen_active());
|
||||
@@ -36,9 +36,20 @@ void test_svg_decoder(void)
|
||||
lv_image_set_src(img, &test_image_svg);
|
||||
lv_obj_align(img, LV_ALIGN_CENTER, 0, 0);
|
||||
assert_screenshot("svg_decoder_1");
|
||||
|
||||
lv_obj_clean(lv_screen_active());
|
||||
lv_image_cache_drop(NULL);
|
||||
}
|
||||
|
||||
void test_svg_decoder_file(void)
|
||||
void test_svg_decoder(void)
|
||||
{
|
||||
svg_decoder();
|
||||
size_t mem_before = lv_test_get_free_mem();
|
||||
svg_decoder();
|
||||
TEST_ASSERT_MEM_LEAK_LESS_THAN(mem_before, 0);
|
||||
}
|
||||
|
||||
static void svg_decoder_file(void)
|
||||
{
|
||||
lv_obj_t * img = lv_image_create(lv_screen_active());
|
||||
lv_obj_set_size(img, lv_pct(100), lv_pct(100));
|
||||
@@ -47,9 +58,20 @@ void test_svg_decoder_file(void)
|
||||
lv_image_set_scale(img, 96);
|
||||
lv_obj_align(img, LV_ALIGN_CENTER, 0, 0);
|
||||
assert_screenshot("svg_decoder_2");
|
||||
|
||||
lv_obj_clean(lv_screen_active());
|
||||
lv_image_cache_drop(NULL);
|
||||
}
|
||||
|
||||
void test_svg_snapshot(void)
|
||||
void test_svg_decoder_file(void)
|
||||
{
|
||||
svg_decoder_file();
|
||||
size_t mem_before = lv_test_get_free_mem();
|
||||
svg_decoder_file();
|
||||
TEST_ASSERT_MEM_LEAK_LESS_THAN(mem_before, 0);
|
||||
}
|
||||
|
||||
void svg_snapshot(void)
|
||||
{
|
||||
LV_IMAGE_DECLARE(test_image_svg);
|
||||
lv_obj_t * img = lv_image_create(lv_screen_active());
|
||||
@@ -65,6 +87,17 @@ void test_svg_snapshot(void)
|
||||
lv_obj_center(img2);
|
||||
assert_screenshot("svg_decoder_3");
|
||||
lv_draw_buf_destroy(draw_buf);
|
||||
|
||||
lv_obj_clean(lv_screen_active());
|
||||
lv_image_cache_drop(NULL);
|
||||
}
|
||||
|
||||
void test_svg_snapshot(void)
|
||||
{
|
||||
svg_snapshot();
|
||||
size_t mem_before = lv_test_get_free_mem();
|
||||
svg_snapshot();
|
||||
TEST_ASSERT_MEM_LEAK_LESS_THAN(mem_before, 0);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user