efl_ui_image: Fix unnecessary unload of memfile_set. 14/232014/1
authorJunsuChoi <jsuya.choi@samsung.com>
Mon, 27 Apr 2020 10:29:47 +0000 (19:29 +0900)
committerJunsuChoi <jsuya.choi@samsung.com>
Mon, 27 Apr 2020 10:35:19 +0000 (19:35 +0900)
Summary:
In D11392, fixed to call file_unload when doing memfile_set.
Therefore, "load,error" callback was called while unloading object
that was not loaded when first load with memfile_set.
So fix it to avoid unnecessary unloading.

Test Plan:
{F3871804}
cp ./test_imge.c ./efl/
cd efl
gcc -o test_image test_image.c -g `pkg-config --cflags --libs elementary`

./test_image
Loading image...
Async file load failed.
Image is ready to show.

Reviewers: Hermet, kimcinoo, herb

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11758

Change-Id: I5d30e5b35c08481cb2eaa7eb4a45d07e49433082

src/lib/elementary/efl_ui_image.c

index e27f5c86d70f98cb16e31c0443470f3f88d4fd27..1e1e3972c3634fc53f47a842331574b6d0c13248 100644 (file)
@@ -2495,7 +2495,10 @@ elm_image_memfile_set(Evas_Object *obj, const void *img, size_t size, const char
    EFL_UI_IMAGE_CHECK(obj) EINA_FALSE;
    EFL_UI_IMAGE_DATA_GET(obj, sd);
 
-   efl_file_unload(obj);
+   if (efl_file_loaded_get(obj))
+     efl_file_unload(obj);
+   else
+     _efl_ui_image_file_set_do(obj);
 
    evas_object_image_memfile_set
      (sd->img, (void *)img, size, (char *)format, (char *)key);