X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Flib%2Felm_thumb.c;h=53e8bc6b5d915a80cad1bea458b3d7b9b5ee03c9;hb=babd22c20014d4dad0f80e23444da6a417bb2da4;hp=eee274e229e8953ad809e5a45e7a2e0addcf266c;hpb=b4124e147dcb923ef729be786783675609224396;p=framework%2Fuifw%2Felementary.git diff --git a/src/lib/elm_thumb.c b/src/lib/elm_thumb.c index eee274e..53e8bc6 100644 --- a/src/lib/elm_thumb.c +++ b/src/lib/elm_thumb.c @@ -35,6 +35,7 @@ struct _Widget_Data int id; const char *file; const char *key; + Ethumb_Exists *exists; } thumb; Ecore_Event_Handler *eeh; Elm_Thumb_Animation_Setting anim_setting; @@ -87,6 +88,11 @@ _del_hook(Evas_Object *obj) if (wd->thumb.id >= 0) ethumb_client_generate_cancel(_elm_ethumb_client, wd->thumb.id, NULL, NULL, NULL); + if (wd->thumb.exists) + { + ethumb_client_thumb_exists_cancel(wd->thumb.exists); + wd->thumb.exists = NULL; + } #endif eina_stringshare_del(wd->file); @@ -239,19 +245,15 @@ _finished_thumb_cb(void *data, Ethumb_Client *c __UNUSED__, int id, const char * } static void -_thumb_apply(Widget_Data *wd) +_thumb_exists(Ethumb_Client *client, Ethumb_Exists *thread, + Eina_Bool exists, void *data) { - if (wd->thumb.id > 0) - { - ethumb_client_generate_cancel - (_elm_ethumb_client, wd->thumb.id, NULL, NULL, NULL); - wd->thumb.id = -1; - } + Widget_Data *wd = data; - if (!wd->file) return; + if (ethumb_client_thumb_exists_check(thread)) + return ; - ethumb_client_file_set(_elm_ethumb_client, wd->file, wd->key); - if (ethumb_client_thumb_exists(_elm_ethumb_client)) + if (exists) { const char *thumb_path, *thumb_key; @@ -274,6 +276,29 @@ _thumb_apply(Widget_Data *wd) edje_object_signal_emit(wd->frame, EDJE_SIGNAL_GENERATE_ERROR, "elm"); evas_object_smart_callback_call(wd->self, SIG_GENERATE_ERROR, NULL); } + +} + +static void +_thumb_apply(Widget_Data *wd) +{ + if (wd->thumb.id > 0) + { + ethumb_client_generate_cancel + (_elm_ethumb_client, wd->thumb.id, NULL, NULL, NULL); + wd->thumb.id = -1; + } + + if (wd->thumb.exists) + { + ethumb_client_thumb_exists_cancel(wd->thumb.exists); + wd->thumb.exists = NULL; + } + + if (!wd->file) return; + + ethumb_client_file_set(_elm_ethumb_client, wd->file, wd->key); + ethumb_client_thumb_exists(_elm_ethumb_client, _thumb_exists, wd); } static Eina_Bool @@ -322,6 +347,12 @@ _thumb_hide_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void evas_object_smart_callback_call(wd->self, SIG_GENERATE_STOP, NULL); } + if (wd->thumb.exists) + { + ethumb_client_thumb_exists_cancel(wd->thumb.exists); + wd->thumb.exists = NULL; + } + if (wd->eeh) { ecore_event_handler_del(wd->eeh); @@ -442,6 +473,7 @@ elm_thumb_add(Evas_Object *parent) wd->key = NULL; wd->eeh = NULL; wd->thumb.id = -1; + wd->thumb.exists = NULL; wd->on_hold = EINA_FALSE; wd->is_video = EINA_FALSE; wd->was_video = EINA_FALSE;