edje - backport fix to opt that actually was a fix to existing bug

so it turns out a fix to an optimization i did was ALSO a fix to an
existing bug that just didn't turn up as much until i added an
optimization. this is that fix backported manually

@fix
This commit is contained in:
Carsten Haitzler 2019-08-26 20:55:07 +01:00
parent de3f8f330f
commit 52fb1c8d43
1 changed files with 15 additions and 10 deletions

View File

@ -189,18 +189,21 @@ _edje_object_message_signal_process_do(Eo *obj EINA_UNUSED, Edje *ed)
groups = ed->groups; groups = ed->groups;
for (l = msgq; l; l = ln) if (groups)
{ {
ln = l->next; for (l = msgq; l; l = ln)
em = INLIST_CONTAINER(Edje_Message, l, inlist_main);
EINA_LIST_FOREACH(groups, lg, lookup_ed)
{ {
if (em->edje == lookup_ed) ln = l->next;
em = INLIST_CONTAINER(Edje_Message, l, inlist_main);
EINA_LIST_FOREACH(groups, lg, lookup_ed)
{ {
msgq = eina_inlist_remove(msgq, &(em->inlist_main)); if (em->edje == lookup_ed)
tmp_msgq = eina_inlist_append(tmp_msgq, &(em->inlist_main)); {
em->in_tmp_msgq = EINA_TRUE; msgq = eina_inlist_remove(msgq, &(em->inlist_main));
break; tmp_msgq = eina_inlist_append(tmp_msgq, &(em->inlist_main));
em->in_tmp_msgq = EINA_TRUE;
break;
}
} }
} }
} }
@ -213,12 +216,14 @@ again:
em = INLIST_CONTAINER(Edje_Message, l, inlist_edje); em = INLIST_CONTAINER(Edje_Message, l, inlist_edje);
if (!em->in_tmp_msgq) continue; if (!em->in_tmp_msgq) continue;
// so why this? any group edje is not the parent - skip this // so why this? any group edje is not the parent - skip this
lookup_ed = NULL;
EINA_LIST_FOREACH(groups, lg, lookup_ed) EINA_LIST_FOREACH(groups, lg, lookup_ed)
{ {
if (em->edje == lookup_ed) break; if (em->edje == lookup_ed) break;
} }
if (!lookup_ed) continue;
tmp_msgq = eina_inlist_remove(tmp_msgq, &(em->inlist_main)); tmp_msgq = eina_inlist_remove(tmp_msgq, &(em->inlist_main));
em->edje->messages = eina_inlist_remove(em->edje->messages, &(em->inlist_edje)); lookup_ed->messages = eina_inlist_remove(lookup_ed->messages, &(em->inlist_edje));
if (!lookup_ed->delete_me) if (!lookup_ed->delete_me)
{ {
lookup_ed->processing_messages++; lookup_ed->processing_messages++;