diff --git a/legacy/evas/src/lib/cache/evas_cache_image.c b/legacy/evas/src/lib/cache/evas_cache_image.c index 17d409720a..534130de08 100644 --- a/legacy/evas/src/lib/cache/evas_cache_image.c +++ b/legacy/evas/src/lib/cache/evas_cache_image.c @@ -339,7 +339,7 @@ _evas_cache_image_async_heavy(void *data) current->channel++; cache = current->cache; - if (!current->flags.loaded) + if (!current->flags.loaded && ((Evas_Image_Load_Func*) current->info.module)->threadable) { error = cache->func.load(current); if (cache->func.debug) @@ -368,7 +368,7 @@ _evas_cache_image_async_end(void *data) ie->cache->pending = eina_list_remove(ie->cache->pending, ie); ie->preload = NULL; - ie->flags.preload_done = 1; + ie->flags.preload_done = ie->flags.loaded; while (ie->targets) { tmp = ie->targets; @@ -427,7 +427,7 @@ _evas_cache_image_entry_preload_add(Image_Entry *ie, { ie->cache->preload = eina_list_append(ie->cache->preload, ie); ie->flags.pending = 0; - + ie->preload = evas_preload_thread_run(_evas_cache_image_async_heavy, _evas_cache_image_async_end, _evas_cache_image_async_cancel, diff --git a/legacy/evas/src/lib/include/evas_private.h b/legacy/evas/src/lib/include/evas_private.h index 154db590a5..8eda2f0716 100644 --- a/legacy/evas/src/lib/include/evas_private.h +++ b/legacy/evas/src/lib/include/evas_private.h @@ -707,6 +707,7 @@ struct _Evas_Func struct _Evas_Image_Load_Func { + Eina_Bool threadable; Eina_Bool (*file_head) (Image_Entry *ie, const char *file, const char *key, int *error); Eina_Bool (*file_data) (Image_Entry *ie, const char *file, const char *key, int *error); }; diff --git a/legacy/evas/src/modules/loaders/edb/evas_image_load_edb.c b/legacy/evas/src/modules/loaders/edb/evas_image_load_edb.c index c3d6a59fa7..239a072dba 100644 --- a/legacy/evas/src/modules/loaders/edb/evas_image_load_edb.c +++ b/legacy/evas/src/modules/loaders/edb/evas_image_load_edb.c @@ -13,6 +13,7 @@ static Eina_Bool evas_image_load_file_data_edb(Image_Entry *ie, const char *file static Evas_Image_Load_Func evas_image_load_edb_func = { + EINA_TRUE, evas_image_load_file_head_edb, evas_image_load_file_data_edb }; diff --git a/legacy/evas/src/modules/loaders/eet/evas_image_load_eet.c b/legacy/evas/src/modules/loaders/eet/evas_image_load_eet.c index 93fb5927da..0e6407a63d 100644 --- a/legacy/evas/src/modules/loaders/eet/evas_image_load_eet.c +++ b/legacy/evas/src/modules/loaders/eet/evas_image_load_eet.c @@ -13,6 +13,7 @@ static Eina_Bool evas_image_load_file_data_eet(Image_Entry *ie, const char *file Evas_Image_Load_Func evas_image_load_eet_func = { + EINA_TRUE, evas_image_load_file_head_eet, evas_image_load_file_data_eet }; diff --git a/legacy/evas/src/modules/loaders/gif/evas_image_load_gif.c b/legacy/evas/src/modules/loaders/gif/evas_image_load_gif.c index 63485f2f8c..1bf75b93cb 100644 --- a/legacy/evas/src/modules/loaders/gif/evas_image_load_gif.c +++ b/legacy/evas/src/modules/loaders/gif/evas_image_load_gif.c @@ -12,6 +12,7 @@ static Eina_Bool evas_image_load_file_data_gif(Image_Entry *ie, const char *file static Evas_Image_Load_Func evas_image_load_gif_func = { + EINA_TRUE, evas_image_load_file_head_gif, evas_image_load_file_data_gif }; diff --git a/legacy/evas/src/modules/loaders/jpeg/evas_image_load_jpeg.c b/legacy/evas/src/modules/loaders/jpeg/evas_image_load_jpeg.c index 560215f27e..b181a0ec5f 100644 --- a/legacy/evas/src/modules/loaders/jpeg/evas_image_load_jpeg.c +++ b/legacy/evas/src/modules/loaders/jpeg/evas_image_load_jpeg.c @@ -36,6 +36,7 @@ static Eina_Bool evas_image_load_file_data_jpeg(Image_Entry *ie, const char *fil static Evas_Image_Load_Func evas_image_load_jpeg_func = { + EINA_TRUE, evas_image_load_file_head_jpeg, evas_image_load_file_data_jpeg }; diff --git a/legacy/evas/src/modules/loaders/pmaps/evas_image_load_pmaps.c b/legacy/evas/src/modules/loaders/pmaps/evas_image_load_pmaps.c index 0884058c30..4c7e709af5 100644 --- a/legacy/evas/src/modules/loaders/pmaps/evas_image_load_pmaps.c +++ b/legacy/evas/src/modules/loaders/pmaps/evas_image_load_pmaps.c @@ -21,6 +21,7 @@ static Eina_Bool evas_image_load_file_head_pmaps(Image_Entry *ie, const char *fi static Eina_Bool evas_image_load_file_data_pmaps(Image_Entry *ie, const char *file, const char *key, int *error) EINA_ARG_NONNULL(1, 2, 4); Evas_Image_Load_Func evas_image_load_pmaps_func = { + EINA_TRUE, evas_image_load_file_head_pmaps, evas_image_load_file_data_pmaps }; diff --git a/legacy/evas/src/modules/loaders/png/evas_image_load_png.c b/legacy/evas/src/modules/loaders/png/evas_image_load_png.c index 2b88511342..e541a41ed5 100644 --- a/legacy/evas/src/modules/loaders/png/evas_image_load_png.c +++ b/legacy/evas/src/modules/loaders/png/evas_image_load_png.c @@ -37,6 +37,7 @@ static Eina_Bool evas_image_load_file_data_png(Image_Entry *ie, const char *file static Evas_Image_Load_Func evas_image_load_png_func = { + EINA_TRUE, evas_image_load_file_head_png, evas_image_load_file_data_png }; diff --git a/legacy/evas/src/modules/loaders/svg/evas_image_load_svg.c b/legacy/evas/src/modules/loaders/svg/evas_image_load_svg.c index 75bbf31118..5e7e1f1957 100644 --- a/legacy/evas/src/modules/loaders/svg/evas_image_load_svg.c +++ b/legacy/evas/src/modules/loaders/svg/evas_image_load_svg.c @@ -10,6 +10,7 @@ static Eina_Bool evas_image_load_file_data_svg(Image_Entry *ie, const char *file Evas_Image_Load_Func evas_image_load_svg_func = { + EINA_FALSE, evas_image_load_file_head_svg, evas_image_load_file_data_svg }; diff --git a/legacy/evas/src/modules/loaders/tiff/evas_image_load_tiff.c b/legacy/evas/src/modules/loaders/tiff/evas_image_load_tiff.c index 1428c278fa..57d0cfb74b 100644 --- a/legacy/evas/src/modules/loaders/tiff/evas_image_load_tiff.c +++ b/legacy/evas/src/modules/loaders/tiff/evas_image_load_tiff.c @@ -18,6 +18,7 @@ static Eina_Bool evas_image_load_file_data_tiff(Image_Entry *ie, const char *fil static Evas_Image_Load_Func evas_image_load_tiff_func = { + EINA_TRUE, evas_image_load_file_head_tiff, evas_image_load_file_data_tiff }; diff --git a/legacy/evas/src/modules/loaders/xpm/evas_image_load_xpm.c b/legacy/evas/src/modules/loaders/xpm/evas_image_load_xpm.c index b7af63ed58..a4d353468d 100644 --- a/legacy/evas/src/modules/loaders/xpm/evas_image_load_xpm.c +++ b/legacy/evas/src/modules/loaders/xpm/evas_image_load_xpm.c @@ -15,6 +15,7 @@ static Eina_Bool evas_image_load_file_data_xpm(Image_Entry *ie, const char *file static Evas_Image_Load_Func evas_image_load_xpm_func = { + EINA_FALSE, evas_image_load_file_head_xpm, evas_image_load_file_data_xpm };