From cbe9342be30383b9424d44449df80d5864ba358a Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Sun, 5 Apr 2009 03:49:16 +0000 Subject: [PATCH] for e_thumb.. use preload! SVN revision: 39866 --- src/bin/e_icon.c | 31 +++++++++++++++++++++++++++++++ src/bin/e_icon.h | 2 ++ src/bin/e_thumb.c | 10 +++++++++- 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/src/bin/e_icon.c b/src/bin/e_icon.c index 7eb292d6d..b9301de77 100644 --- a/src/bin/e_icon.c +++ b/src/bin/e_icon.c @@ -12,6 +12,7 @@ struct _E_Smart_Data int size; unsigned char fill_inside : 1; unsigned char scale_up : 1; + unsigned char preload : 1; }; /* local subsystem functions */ @@ -50,6 +51,7 @@ e_icon_file_set(Evas_Object *obj, const char *file) if (sd->size != 0) evas_object_image_load_size_set(sd->obj, sd->size, sd->size); evas_object_image_file_set(sd->obj, file, NULL); + if (sd->preload) evas_object_image_preload(sd->obj, 0); _e_icon_smart_reconfigure(sd); } @@ -64,6 +66,7 @@ e_icon_file_key_set(Evas_Object *obj, const char *file, const char *key) if (sd->size != 0) evas_object_image_load_size_set(sd->obj, sd->size, sd->size); evas_object_image_file_set(sd->obj, file, key); + if (sd->preload) evas_object_image_preload(sd->obj, 0); _e_icon_smart_reconfigure(sd); } @@ -161,6 +164,26 @@ e_icon_alpha_get(Evas_Object *obj) return evas_object_image_alpha_get(sd->obj); } +EAPI void +e_icon_preload_set(Evas_Object *obj, int preload) +{ + E_Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; + sd->preload = preload; +} + +EAPI int +e_icon_preload_get(Evas_Object *obj) +{ + E_Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return 0; + return sd->preload; +} + EAPI void e_icon_size_get(Evas_Object *obj, int *w, int *h) { @@ -354,6 +377,12 @@ _e_icon_smart_init(void) } } +static void +_e_icon_preloaded(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + evas_object_smart_callback_call(data, "preloaded", NULL); +} + static void _e_icon_smart_add(Evas_Object *obj) { @@ -362,6 +391,8 @@ _e_icon_smart_add(Evas_Object *obj) sd = calloc(1, sizeof(E_Smart_Data)); if (!sd) return; sd->obj = evas_object_image_add(evas_object_evas_get(obj)); + evas_object_event_callback_add(sd->obj, EVAS_CALLBACK_IMAGE_PRELOADED, + _e_icon_preloaded, obj); sd->x = 0; sd->y = 0; sd->w = 0; diff --git a/src/bin/e_icon.h b/src/bin/e_icon.h index 33ab037a3..84ba34f80 100644 --- a/src/bin/e_icon.h +++ b/src/bin/e_icon.h @@ -16,6 +16,8 @@ EAPI void e_icon_smooth_scale_set (Evas_Object *obj, int smooth); EAPI int e_icon_smooth_scale_get (Evas_Object *obj); EAPI void e_icon_alpha_set (Evas_Object *obj, int smooth); EAPI int e_icon_alpha_get (Evas_Object *obj); +EAPI void e_icon_preload_set (Evas_Object *obj, int preload); +EAPI int e_icon_preload_get (Evas_Object *obj); EAPI void e_icon_size_get (Evas_Object *obj, int *w, int *h); EAPI int e_icon_fill_inside_get (Evas_Object *obj); EAPI void e_icon_fill_inside_set (Evas_Object *obj, int fill_inside); diff --git a/src/bin/e_thumb.c b/src/bin/e_thumb.c index 4233d5610..dc2cd7667 100644 --- a/src/bin/e_thumb.c +++ b/src/bin/e_thumb.c @@ -71,6 +71,12 @@ e_thumb_shutdown(void) return 1; } +static void +_thumb_preloaded(void *data, Evas_Object *obj, void *event) +{ + evas_object_smart_callback_call(data, "e_thumb_gen", NULL); +} + EAPI Evas_Object * e_thumb_icon_add(Evas *evas) { @@ -78,6 +84,7 @@ e_thumb_icon_add(Evas *evas) E_Thumb *eth; obj = e_icon_add(evas); + evas_object_smart_callback_add(obj, "preloaded", _thumb_preloaded, obj); _objid++; eth = E_NEW(E_Thumb, 1); eth->objid = _objid; @@ -221,8 +228,9 @@ e_thumb_client_data(Ecore_Ipc_Event_Client_Data *e) _pending--; eth->done = 1; if (_pending == 0) _e_thumb_thumbnailers_kill(); + e_icon_preload_set(obj, 1); e_icon_file_key_set(obj, icon, "/thumbnail/data"); - evas_object_smart_callback_call(obj, "e_thumb_gen", NULL); +//x// evas_object_smart_callback_call(obj, "e_thumb_gen", NULL); } } }