avoid norender when doing initial queued block - it's limited to 1 block

anyway.



SVN revision: 47550
This commit is contained in:
Carsten Haitzler 2010-03-29 02:27:26 +00:00
parent 31321fb483
commit a22555c551
1 changed files with 16 additions and 9 deletions

View File

@ -974,7 +974,7 @@ _item_unrealize(Elm_Genlist_Item *it)
} }
static int static int
_item_block_recalc(Item_Block *itb, int in, int qadd) _item_block_recalc(Item_Block *itb, int in, int qadd, int norender)
{ {
const Eina_List *l; const Eina_List *l;
Elm_Genlist_Item *it; Elm_Genlist_Item *it;
@ -1023,7 +1023,7 @@ _item_block_recalc(Item_Block *itb, int in, int qadd)
itb->minh = minh; itb->minh = minh;
itb->changed = EINA_FALSE; itb->changed = EINA_FALSE;
/* force an evas norender to garbage collect deleted objects */ /* force an evas norender to garbage collect deleted objects */
evas_norender(evas_object_evas_get(itb->wd->obj)); if (norender) evas_norender(evas_object_evas_get(itb->wd->obj));
return showme; return showme;
} }
@ -1154,7 +1154,7 @@ _calc_job(void *data)
if (itb->changed) if (itb->changed)
{ {
if (itb->realized) _item_block_unrealize(itb); if (itb->realized) _item_block_unrealize(itb);
showme = _item_block_recalc(itb, in, 0); showme = _item_block_recalc(itb, in, 0, 1);
chb = itb; chb = itb;
} }
itb->y = y; itb->y = y;
@ -1269,7 +1269,7 @@ _update_job(void *data)
{ {
position = 1; position = 1;
itb->changed = EINA_TRUE; itb->changed = EINA_TRUE;
_item_block_recalc(itb, num0, 0); _item_block_recalc(itb, num0, 0, 1);
_item_block_position(itb, num0); _item_block_position(itb, num0);
} }
} }
@ -1684,9 +1684,8 @@ _item_block_add(Widget_Data *wd, Elm_Genlist_Item *it)
} }
static int static int
_item_idler(void *data) _queue_proecess(Widget_Data *wd, int norender)
{ {
Widget_Data *wd = data;
int n, showme = 0; int n, showme = 0;
double t0, t; double t0, t;
@ -1702,7 +1701,7 @@ _item_idler(void *data)
t = ecore_time_get(); t = ecore_time_get();
if (it->block->changed) if (it->block->changed)
{ {
showme = _item_block_recalc(it->block, it->block->num, 1); showme = _item_block_recalc(it->block, it->block->num, 1, norender);
it->block->changed = 0; it->block->changed = 0;
} }
if (showme) it->block->showme = 1; if (showme) it->block->showme = 1;
@ -1711,7 +1710,15 @@ _item_idler(void *data)
if ((t - t0) > (ecore_animator_frametime_get())) break; if ((t - t0) > (ecore_animator_frametime_get())) break;
} }
} }
if (n > 0) return n;
}
static int
_item_idler(void *data)
{
Widget_Data *wd = data;
if (_queue_proecess(wd, 1) > 0)
{ {
if (wd->calc_job) ecore_job_del(wd->calc_job); if (wd->calc_job) ecore_job_del(wd->calc_job);
wd->calc_job = ecore_job_add(_calc_job, wd); wd->calc_job = ecore_job_add(_calc_job, wd);
@ -1737,7 +1744,7 @@ _item_queue(Widget_Data *wd, Elm_Genlist_Item *it)
ecore_idler_del(wd->queue_idler); ecore_idler_del(wd->queue_idler);
wd->queue_idler = NULL; wd->queue_idler = NULL;
} }
_item_idler(wd); _queue_proecess(wd, 0);
} }
if (!wd->queue_idler) wd->queue_idler = ecore_idler_add(_item_idler, wd); if (!wd->queue_idler) wd->queue_idler = ecore_idler_add(_item_idler, wd);
} }