diff options
Diffstat (limited to 'src/modules')
-rw-r--r-- | src/modules/evas/engines/software_generic/evas_engine.c | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/src/modules/evas/engines/software_generic/evas_engine.c b/src/modules/evas/engines/software_generic/evas_engine.c index 8b3441444b..577d3af4b0 100644 --- a/src/modules/evas/engines/software_generic/evas_engine.c +++ b/src/modules/evas/engines/software_generic/evas_engine.c | |||
@@ -949,10 +949,19 @@ eng_image_load(void *data EINA_UNUSED, const char *file, const char *key, int *e | |||
949 | ie = evas_cache2_image_open(evas_common_image_cache2_get(), | 949 | ie = evas_cache2_image_open(evas_common_image_cache2_get(), |
950 | file, key, lo, error); | 950 | file, key, lo, error); |
951 | if (ie) | 951 | if (ie) |
952 | *error = evas_cache2_image_open_wait(ie); | 952 | { |
953 | *error = evas_cache2_image_open_wait(ie); | ||
954 | if ((*error != EVAS_LOAD_ERROR_NONE) && ie->animated.animated) | ||
955 | { | ||
956 | evas_cache2_image_close(ie); | ||
957 | goto use_local_cache; | ||
958 | } | ||
959 | } | ||
953 | return ie; | 960 | return ie; |
954 | } | 961 | } |
962 | use_local_cache: | ||
955 | #endif | 963 | #endif |
964 | |||
956 | return evas_common_load_image_from_file(file, key, lo, error); | 965 | return evas_common_load_image_from_file(file, key, lo, error); |
957 | } | 966 | } |
958 | 967 | ||
@@ -968,10 +977,19 @@ eng_image_mmap(void *data EINA_UNUSED, Eina_File *f, const char *key, int *error | |||
968 | ie = evas_cache2_image_open(evas_common_image_cache2_get(), | 977 | ie = evas_cache2_image_open(evas_common_image_cache2_get(), |
969 | eina_file_filename_get(f), key, lo, error); | 978 | eina_file_filename_get(f), key, lo, error); |
970 | if (ie) | 979 | if (ie) |
971 | *error = evas_cache2_image_open_wait(ie); | 980 | { |
981 | *error = evas_cache2_image_open_wait(ie); | ||
982 | if ((*error != EVAS_LOAD_ERROR_NONE) && ie->animated.animated) | ||
983 | { | ||
984 | evas_cache2_image_close(ie); | ||
985 | goto use_local_cache; | ||
986 | } | ||
987 | } | ||
972 | return ie; | 988 | return ie; |
973 | } | 989 | } |
990 | use_local_cache: | ||
974 | #endif | 991 | #endif |
992 | |||
975 | return evas_common_load_image_from_mmap(f, key, lo, error); | 993 | return evas_common_load_image_from_mmap(f, key, lo, error); |
976 | } | 994 | } |
977 | 995 | ||
@@ -1295,7 +1313,7 @@ eng_image_draw(void *data EINA_UNUSED, void *context, void *surface, void *image | |||
1295 | if (im->cache_entry.space == EVAS_COLORSPACE_ARGB8888) | 1313 | if (im->cache_entry.space == EVAS_COLORSPACE_ARGB8888) |
1296 | { | 1314 | { |
1297 | #if EVAS_CSERVE2 | 1315 | #if EVAS_CSERVE2 |
1298 | if (evas_cserve2_use_get()) | 1316 | if (evas_cserve2_use_get() && evas_cache2_image_cached(&im->cache_entry)) |
1299 | evas_cache2_image_load_data(&im->cache_entry); | 1317 | evas_cache2_image_load_data(&im->cache_entry); |
1300 | else | 1318 | else |
1301 | #endif | 1319 | #endif |