summaryrefslogtreecommitdiff
path: root/src/lib/evas
diff options
context:
space:
mode:
authorJean-Philippe Andre <jp.andre@samsung.com>2013-09-04 16:14:37 +0900
committerJean-Philippe Andre <jp.andre@samsung.com>2013-10-28 15:47:15 +0900
commit97d9fab7042f213498268dfc58636b823380245c (patch)
tree344ac20e4aa4854d23dba9f7afada5b6a2759e65 /src/lib/evas
parentbfe3fe27df9384642d8f3b277ec694c9d42fc0c9 (diff)
evas/cserve2: Fallback to normal cache for animated gifs
Pass around "animated" flag for images that can be animated. Fallback to local cache if the image is animated. Implementing support for animated images in cserve2 does not seem to make a lot of sense considering each frame must be requested independently in real time,... and to be honest there doesn't seem to be any valid use case anyway :)
Diffstat (limited to 'src/lib/evas')
-rw-r--r--src/lib/evas/cache2/evas_cache2.c3
-rw-r--r--src/lib/evas/cserve2/evas_cs2.h2
-rw-r--r--src/lib/evas/cserve2/evas_cs2_client.c9
3 files changed, 13 insertions, 1 deletions
diff --git a/src/lib/evas/cache2/evas_cache2.c b/src/lib/evas/cache2/evas_cache2.c
index 4b51b3292e..0444741289 100644
--- a/src/lib/evas/cache2/evas_cache2.c
+++ b/src/lib/evas/cache2/evas_cache2.c
@@ -873,6 +873,9 @@ evas_cache2_image_scale_load(Image_Entry *im,
873 int error = EVAS_LOAD_ERROR_NONE; 873 int error = EVAS_LOAD_ERROR_NONE;
874 Image_Entry *ret; 874 Image_Entry *ret;
875 875
876 if (!im->cache2)
877 return im;
878
876 if (!smooth && im->scale_hint != EVAS_IMAGE_SCALE_HINT_STATIC) 879 if (!smooth && im->scale_hint != EVAS_IMAGE_SCALE_HINT_STATIC)
877 goto parent_out; 880 goto parent_out;
878 881
diff --git a/src/lib/evas/cserve2/evas_cs2.h b/src/lib/evas/cserve2/evas_cs2.h
index a47c384b82..835ed31c0b 100644
--- a/src/lib/evas/cserve2/evas_cs2.h
+++ b/src/lib/evas/cserve2/evas_cs2.h
@@ -73,6 +73,7 @@ struct _Msg_Opened {
73 int loop_count; 73 int loop_count;
74 int loop_hint; /* include Evas.h? Copy the enum around? */ 74 int loop_hint; /* include Evas.h? Copy the enum around? */
75 Eina_Bool alpha : 1; 75 Eina_Bool alpha : 1;
76 Eina_Bool animated : 1;
76 } image; 77 } image;
77}; 78};
78 79
@@ -333,6 +334,7 @@ struct _File_Data {
333 Eina_Bool alpha : 1; 334 Eina_Bool alpha : 1;
334 Eina_Bool invalid : 1; 335 Eina_Bool invalid : 1;
335 Eina_Bool valid : 1; 336 Eina_Bool valid : 1;
337 Eina_Bool animated : 1;
336}; 338};
337 339
338#define IMAGE_DATA_ARRAY_TAG ('I' | 'M' << 8 | 'A' << 16 | 'G' << 24) 340#define IMAGE_DATA_ARRAY_TAG ('I' | 'M' << 8 | 'A' << 16 | 'G' << 24)
diff --git a/src/lib/evas/cserve2/evas_cs2_client.c b/src/lib/evas/cserve2/evas_cs2_client.c
index 852ae08640..566bd0655a 100644
--- a/src/lib/evas/cserve2/evas_cs2_client.c
+++ b/src/lib/evas/cserve2/evas_cs2_client.c
@@ -505,6 +505,7 @@ _image_opened_cb(void *data, const void *msg_received, int size)
505 ie->animated.loop_hint = msg->image.loop_hint; 505 ie->animated.loop_hint = msg->image.loop_hint;
506 ie->animated.loop_count = msg->image.loop_count; 506 ie->animated.loop_count = msg->image.loop_count;
507 ie->animated.frame_count = msg->image.frame_count; 507 ie->animated.frame_count = msg->image.frame_count;
508 ie->animated.animated = msg->image.animated;
508} 509}
509 510
510static void 511static void
@@ -985,9 +986,9 @@ evas_cserve2_image_load_wait(Image_Entry *ie)
985 ie->animated.loop_hint = fd->loop_hint; 986 ie->animated.loop_hint = fd->loop_hint;
986 ie->animated.loop_count = fd->loop_count; 987 ie->animated.loop_count = fd->loop_count;
987 ie->animated.frame_count = fd->frame_count; 988 ie->animated.frame_count = fd->frame_count;
989 ie->animated.animated = fd->animated;
988 ie->server_id = fd->id; 990 ie->server_id = fd->id;
989 ie->open_rid = 0; 991 ie->open_rid = 0;
990 return CSERVE2_NONE;
991 } 992 }
992#endif 993#endif
993 994
@@ -999,6 +1000,12 @@ evas_cserve2_image_load_wait(Image_Entry *ie)
999 return CSERVE2_GENERIC; 1000 return CSERVE2_GENERIC;
1000 } 1001 }
1001 1002
1003 if (ie->animated.animated)
1004 {
1005 WRN("This image is animated. cserve2 does not support animations");
1006 return CSERVE2_GENERIC;
1007 }
1008
1002 return CSERVE2_NONE; 1009 return CSERVE2_NONE;
1003} 1010}
1004 1011