elementary: improve rendering stability by ordering queue like the displayed list.

SVN revision: 65826
This commit is contained in:
Cedric BAIL 2011-12-02 16:17:10 +00:00
parent 3270f81a6d
commit 36f42652ca
1 changed files with 14 additions and 10 deletions

View File

@ -3411,12 +3411,16 @@ _item_idle_enterer(void *data)
}
static void
_item_queue(Widget_Data *wd,
Elm_Gen_Item *it)
_item_queue(Widget_Data *wd,
Elm_Gen_Item *it,
Eina_Compare_Cb cb)
{
if (it->item->queued) return;
it->item->queued = EINA_TRUE;
wd->queue = eina_list_append(wd->queue, it);
if (cb)
wd->queue = eina_list_sorted_insert(wd->queue, cb, it);
else
wd->queue = eina_list_append(wd->queue, it);
// FIXME: why does a freeze then thaw here cause some genlist
// elm_genlist_item_append() to be much much slower?
// evas_event_freeze(evas_object_evas_get(wd->obj));
@ -3475,7 +3479,7 @@ _item_move_after(Elm_Gen_Item *it, Elm_Gen_Item *after)
it->item->rel->relcount++;
it->item->before = EINA_FALSE;
if (after->item->group_item) it->item->group_item = after->item->group_item;
_item_queue(it->wd, it);
_item_queue(it->wd, it, NULL);
evas_object_smart_callback_call(WIDGET(it), SIG_MOVED, it);
}
@ -3493,7 +3497,7 @@ _item_move_before(Elm_Gen_Item *it, Elm_Gen_Item *before)
it->item->rel->relcount++;
it->item->before = EINA_TRUE;
if (before->item->group_item) it->item->group_item = before->item->group_item;
_item_queue(it->wd, it);
_item_queue(it->wd, it, NULL);
evas_object_smart_callback_call(WIDGET(it), SIG_MOVED, it);
}
@ -3534,7 +3538,7 @@ elm_genlist_item_append(Evas_Object *obj,
it->item->rel->relcount++;
}
it->item->before = EINA_FALSE;
_item_queue(wd, it);
_item_queue(wd, it, NULL);
return it;
}
@ -3574,7 +3578,7 @@ elm_genlist_item_prepend(Evas_Object *obj,
it->item->rel->relcount++;
}
it->item->before = EINA_TRUE;
_item_queue(wd, it);
_item_queue(wd, it, NULL);
return it;
}
@ -3615,7 +3619,7 @@ elm_genlist_item_insert_after(Evas_Object *obj,
it->item->rel = after;
it->item->rel->relcount++;
it->item->before = EINA_FALSE;
_item_queue(wd, it);
_item_queue(wd, it, NULL);
return it;
}
@ -3655,7 +3659,7 @@ elm_genlist_item_insert_before(Evas_Object *obj,
it->item->rel = before;
it->item->rel->relcount++;
it->item->before = EINA_TRUE;
_item_queue(wd, it);
_item_queue(wd, it, NULL);
return it;
}
@ -3737,7 +3741,7 @@ elm_genlist_item_direct_sorted_insert(Evas_Object *obj,
it->item->rel->relcount++;
}
_item_queue(wd, it);
_item_queue(wd, it, comp);
return it;
}