From: Tae-Hwan Kim Date: Fri, 5 Apr 2013 05:04:53 +0000 (+0900) Subject: [Genlst] Fix genlist X-Git-Tag: 2.1b_release~58 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=759b9a799706dc6fed9f8eb5e4c4a55bd5752259;p=framework%2Fuifw%2Felementary.git [Genlst] Fix genlist idle enterer is not called always. So calc job is alive always for this Change-Id: I7cffbeb7f92882a01e9be05e4992958ff0aee4c5 --- diff --git a/packaging/elementary.spec b/packaging/elementary.spec index 42057e0..4c10f21 100644 --- a/packaging/elementary.spec +++ b/packaging/elementary.spec @@ -1,7 +1,7 @@ #sbs-git:slp/pkgs/e/elementary elementary 1.0.0+svn.70492slp2+build11 Name: elementary Summary: EFL toolkit for small touchscreens -Version: 1.7.1+svn.77535+build89r01 +Version: 1.7.1+svn.77535+build89r02 Release: 1 Group: System/Libraries License: LGPLv2.1 diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c index 1e5049f..e8f5028 100644 --- a/src/lib/elm_genlist.c +++ b/src/lib/elm_genlist.c @@ -467,10 +467,7 @@ _elm_genlist_pan_smart_resize(Evas_Object *obj, evas_object_geometry_get(obj, NULL, NULL, &ow, &oh); if ((ow == w) && (oh == h)) return; - psd->wsd->s_iface->content_viewport_size_get - (ELM_WIDGET_DATA(psd->wsd)->obj, &vw, NULL); - if (vw == 0 || vh == 0) return; - psd->wsd->prev_viewport_w = vw; + if (vw != 0) psd->wsd->prev_viewport_w = vw; if (psd->wsd->mode == ELM_LIST_COMPRESS) psd->wsd->size_changed = EINA_TRUE; @@ -3968,17 +3965,24 @@ _queue_process(Elm_Genlist_Smart_Data *sd) } static Eina_Bool -_idle_process(void *data, - Eina_Bool *wakeup) +_item_idle_enterer(void *data) { Elm_Genlist_Smart_Data *sd = data; if (sd->prev_viewport_w == 0) return ECORE_CALLBACK_RENEW; - if (_queue_process(sd) > 0) *wakeup = EINA_TRUE; + if (_queue_process(sd) > 0) + { + // wake up mainloop + // Job always be alive because idle_enterer should be alive + if (sd->calc_job) ecore_job_del(sd->calc_job); + sd->calc_job = ecore_job_add(_calc_job, sd); + } if (!sd->queue) { + sd->queue_idle_enterer = NULL; return ECORE_CALLBACK_CANCEL; } + #if GENLIST_FX_SUPPORT if (sd->fx_first_captured) _elm_genlist_fx_clear(ELM_WIDGET_DATA(sd)->obj); @@ -3986,24 +3990,6 @@ _idle_process(void *data, return ECORE_CALLBACK_RENEW; } -static Eina_Bool -_item_idle_enterer(void *data) -{ - Eina_Bool wakeup = EINA_FALSE; - Elm_Genlist_Smart_Data *sd = data; - Eina_Bool ok = _idle_process(data, &wakeup); - - if (wakeup) - { - // wake up mainloop - if (sd->calc_job) ecore_job_del(sd->calc_job); - sd->calc_job = ecore_job_add(_calc_job, sd); - } - if (ok == ECORE_CALLBACK_CANCEL) sd->queue_idle_enterer = NULL; - - return ok; -} - static void _item_queue(Elm_Genlist_Smart_Data *sd, Elm_Gen_Item *it,