From: 정찬욱 <joey.jung@samsung.com>

Subject: [E-devel] [Patch] elm_genlist pan changed patch

This patch is to fix the problem that blinking is occured when
application use the ecore timer and
the rendering delay at pan resize/move using evas_object_smart_changed
instead of ecore_job_add.




SVN revision: 66132
This commit is contained in:
정찬욱 2011-12-13 04:15:10 +00:00 committed by Carsten Haitzler
parent 4231f82a56
commit 1c1f6ef90a
2 changed files with 16 additions and 5 deletions

View File

@ -2628,7 +2628,7 @@ _pan_resize(Evas_Object *obj,
if (sd->resize_job) ecore_job_del(sd->resize_job);
sd->resize_job = ecore_job_add(_pan_resize_job, sd);
}
sd->wd->pan_resized = EINA_TRUE;
sd->wd->pan_changed = EINA_TRUE;
evas_object_smart_changed(obj);
if (sd->wd->calc_job) ecore_job_del(sd->wd->calc_job);
sd->wd->calc_job = NULL;
@ -2651,10 +2651,10 @@ _pan_calculate(Evas_Object *obj)
if (!sd) return;
evas_event_freeze(evas_object_evas_get(obj));
if (sd->wd->pan_resized)
if (sd->wd->pan_changed)
{
_calc_job(sd->wd);
sd->wd->pan_resized = EINA_FALSE;
sd->wd->pan_changed = EINA_FALSE;
}
evas_object_geometry_get(obj, &ox, &oy, &ow, &oh);
@ -2705,8 +2705,11 @@ _pan_move(Evas_Object *obj,
Pan *sd = evas_object_smart_data_get(obj);
if (!sd) return;
sd->wd->pan_changed = EINA_TRUE;
evas_object_smart_changed(obj);
if (sd->wd->calc_job) ecore_job_del(sd->wd->calc_job);
sd->wd->calc_job = ecore_job_add(_calc_job, sd->wd);
sd->wd->calc_job = NULL;
}
static void
@ -3427,6 +3430,13 @@ _queue_process(Widget_Data *wd)
{
showme = _item_block_recalc(it->item->block, it->item->block->num, EINA_TRUE);
it->item->block->changed = 0;
if(wd->pan_changed)
{
if (wd->calc_job) ecore_job_del(wd->calc_job);
wd->calc_job = NULL;
_calc_job(wd);
wd->pan_changed = EINA_FALSE;
}
}
if (showme) it->item->block->showme = EINA_TRUE;
if (eina_inlist_count(wd->blocks) > 1)
@ -3870,6 +3880,7 @@ _elm_genlist_clear(Evas_Object *obj, Eina_Bool standby)
}
}
wd->clear_me = 0;
wd->pan_changed = EINA_TRUE;
if (wd->calc_job)
{
ecore_job_del(wd->calc_job);

View File

@ -132,7 +132,7 @@ struct _Widget_Data
Eina_Bool swipe : 1;
Eina_Bool reorder_pan_move : 1;
Eina_Bool auto_scroll_enabled : 1;
Eina_Bool pan_resized : 1;
Eina_Bool pan_changed : 1;
Eina_Bool requeued : 1; /* this is set to EINA_TRUE when the item is re-queued. this happens when the item is un-queued but the rel item is still in the queue. this item will be processed later. */
struct
{