fix(SVG): fix SVG decoder memory leak. close decoder (#8658)

This commit is contained in:
Liam Howatt
2025-08-15 17:40:05 -04:00
committed by GitHub
parent e6864400a2
commit 1555cfe01d
2 changed files with 38 additions and 3 deletions
+2
View File
@@ -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;
+36 -3
View File
@@ -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