forked from enlightenment/efl
edje messages - track all messages for an edge obj in the edje
this is the basis for some future speedups to avoid full message queue walks - get this right first.
This commit is contained in:
parent
e667dd8b2c
commit
bda708d38f
|
@ -201,6 +201,7 @@ again:
|
||||||
}
|
}
|
||||||
if (em->edje != lookup_ed) continue;
|
if (em->edje != 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));
|
||||||
if (!lookup_ed->delete_me)
|
if (!lookup_ed->delete_me)
|
||||||
{
|
{
|
||||||
lookup_ed->processing_messages++;
|
lookup_ed->processing_messages++;
|
||||||
|
@ -651,6 +652,7 @@ _edje_message_propagate_send(Edje *ed, Edje_Queue queue, Edje_Message_Type type,
|
||||||
|
|
||||||
em->msg = msg;
|
em->msg = msg;
|
||||||
msgq = eina_inlist_append(msgq, &(em->inlist_main));
|
msgq = eina_inlist_append(msgq, &(em->inlist_main));
|
||||||
|
em->edje->messages = eina_inlist_append(em->edje->messages, &(em->inlist_edje));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -898,6 +900,7 @@ _edje_message_queue_process(void)
|
||||||
em = INLIST_CONTAINER(Edje_Message, l, inlist_main);
|
em = INLIST_CONTAINER(Edje_Message, l, inlist_main);
|
||||||
ed = em->edje;
|
ed = em->edje;
|
||||||
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));
|
||||||
em->edje->message.num--;
|
em->edje->message.num--;
|
||||||
if (!ed->delete_me)
|
if (!ed->delete_me)
|
||||||
{
|
{
|
||||||
|
@ -951,6 +954,7 @@ _edje_message_queue_clear(void)
|
||||||
em = INLIST_CONTAINER(Edje_Message, l, inlist_main);
|
em = INLIST_CONTAINER(Edje_Message, l, inlist_main);
|
||||||
msgq = eina_inlist_remove(msgq, &(em->inlist_main));
|
msgq = eina_inlist_remove(msgq, &(em->inlist_main));
|
||||||
em->edje->message.num--;
|
em->edje->message.num--;
|
||||||
|
em->edje->messages = eina_inlist_remove(em->edje->messages, &(em->inlist_edje));
|
||||||
_edje_message_free(em);
|
_edje_message_free(em);
|
||||||
}
|
}
|
||||||
while (tmp_msgq)
|
while (tmp_msgq)
|
||||||
|
@ -959,6 +963,7 @@ _edje_message_queue_clear(void)
|
||||||
em = INLIST_CONTAINER(Edje_Message, l, inlist_main);
|
em = INLIST_CONTAINER(Edje_Message, l, inlist_main);
|
||||||
tmp_msgq = eina_inlist_remove(tmp_msgq, &(em->inlist_main));
|
tmp_msgq = eina_inlist_remove(tmp_msgq, &(em->inlist_main));
|
||||||
em->edje->message.num--;
|
em->edje->message.num--;
|
||||||
|
em->edje->messages = eina_inlist_remove(em->edje->messages, &(em->inlist_edje));
|
||||||
_edje_message_free(em);
|
_edje_message_free(em);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -979,6 +984,7 @@ _edje_message_del(Edje *ed)
|
||||||
{
|
{
|
||||||
msgq = eina_inlist_remove(msgq, &(em->inlist_main));
|
msgq = eina_inlist_remove(msgq, &(em->inlist_main));
|
||||||
em->edje->message.num--;
|
em->edje->message.num--;
|
||||||
|
em->edje->messages = eina_inlist_remove(em->edje->messages, &(em->inlist_edje));
|
||||||
_edje_message_free(em);
|
_edje_message_free(em);
|
||||||
}
|
}
|
||||||
if (ed->message.num <= 0) return;
|
if (ed->message.num <= 0) return;
|
||||||
|
@ -992,6 +998,7 @@ _edje_message_del(Edje *ed)
|
||||||
{
|
{
|
||||||
tmp_msgq = eina_inlist_remove(tmp_msgq, &(em->inlist_main));
|
tmp_msgq = eina_inlist_remove(tmp_msgq, &(em->inlist_main));
|
||||||
em->edje->message.num--;
|
em->edje->message.num--;
|
||||||
|
em->edje->messages = eina_inlist_remove(em->edje->messages, &(em->inlist_edje));
|
||||||
_edje_message_free(em);
|
_edje_message_free(em);
|
||||||
}
|
}
|
||||||
if (ed->message.num <= 0) return;
|
if (ed->message.num <= 0) return;
|
||||||
|
|
|
@ -1742,6 +1742,8 @@ struct _Edje
|
||||||
lua_State *L;
|
lua_State *L;
|
||||||
Eina_Inlist *lua_objs;
|
Eina_Inlist *lua_objs;
|
||||||
|
|
||||||
|
Eina_Inlist *messages;
|
||||||
|
|
||||||
int lua_ref;
|
int lua_ref;
|
||||||
int processing_messages;
|
int processing_messages;
|
||||||
int references;
|
int references;
|
||||||
|
@ -2220,6 +2222,7 @@ struct _Edje_Message_Signal
|
||||||
struct _Edje_Message
|
struct _Edje_Message
|
||||||
{
|
{
|
||||||
Eina_Inlist inlist_main; // msgq or tmp_msgq - mut exclusive
|
Eina_Inlist inlist_main; // msgq or tmp_msgq - mut exclusive
|
||||||
|
Eina_Inlist inlist_edje;
|
||||||
Edje *edje;
|
Edje *edje;
|
||||||
unsigned char *msg;
|
unsigned char *msg;
|
||||||
int id;
|
int id;
|
||||||
|
|
Loading…
Reference in New Issue