parent
4648c06858
commit
674c783cdf
|
@ -193,10 +193,11 @@ extern "C" {
|
||||||
void edje_object_part_drag_page (Evas_Object *obj, const char *part, double dx, double dy);
|
void edje_object_part_drag_page (Evas_Object *obj, const char *part, double dx, double dy);
|
||||||
|
|
||||||
/* edje_message_queue.c */
|
/* edje_message_queue.c */
|
||||||
void edje_object_message_send (Evas_Object *obj, Edje_Message_Type type, int id, void *msg);
|
void edje_object_message_send (Evas_Object *obj, Edje_Message_Type type, int id, void *msg);
|
||||||
void edje_object_message_handler_set (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Edje_Message_Type type, int id, void *msg), void *data);
|
void edje_object_message_handler_set (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Edje_Message_Type type, int id, void *msg), void *data);
|
||||||
|
void edje_object_message_signal_process (Evas_Object *obj);
|
||||||
void edje_message_signal_process (void);
|
|
||||||
|
void edje_message_signal_process (void);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,9 @@
|
||||||
|
|
||||||
Ecore_Job *job = NULL;
|
Ecore_Job *job = NULL;
|
||||||
|
|
||||||
|
static Evas_List *msgq = NULL;
|
||||||
|
static Evas_List *tmp_msgq = NULL;
|
||||||
|
|
||||||
void
|
void
|
||||||
edje_object_message_send(Evas_Object *obj, Edje_Message_Type type, int id, void *msg)
|
edje_object_message_send(Evas_Object *obj, Edje_Message_Type type, int id, void *msg)
|
||||||
{
|
{
|
||||||
|
@ -24,15 +27,58 @@ edje_object_message_handler_set(Evas_Object *obj, void (*func) (void *data, Evas
|
||||||
_edje_message_cb_set(ed, func, data);
|
_edje_message_cb_set(ed, func, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
edje_object_message_signal_process(Evas_Object *obj)
|
||||||
|
{
|
||||||
|
Evas_List *l, *tmpq = NULL;
|
||||||
|
Edje *ed;
|
||||||
|
|
||||||
|
ed = _edje_fetch(obj);
|
||||||
|
if (!ed) return;
|
||||||
|
|
||||||
|
for (l = msgq; l; l = l->next)
|
||||||
|
{
|
||||||
|
Edje_Message *em;
|
||||||
|
|
||||||
|
em = l->data;
|
||||||
|
if (em->edje == ed)
|
||||||
|
tmpq = evas_list_append(tmpq, em);
|
||||||
|
}
|
||||||
|
/* now remove them from the old queue */
|
||||||
|
for (l = tmpq; l; l = l->next)
|
||||||
|
msgq = evas_list_remove(msgq, l->data);
|
||||||
|
/* a temporary message queue */
|
||||||
|
if (tmp_msgq)
|
||||||
|
{
|
||||||
|
while (tmpq)
|
||||||
|
{
|
||||||
|
tmp_msgq = evas_list_append(tmp_msgq, tmpq->data);
|
||||||
|
tmpq = evas_list_remove_list(tmpq, tmpq);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tmp_msgq = tmpq;
|
||||||
|
tmpq = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (tmp_msgq)
|
||||||
|
{
|
||||||
|
Edje_Message *em;
|
||||||
|
|
||||||
|
em = tmp_msgq->data;
|
||||||
|
tmp_msgq = evas_list_remove_list(tmp_msgq, tmp_msgq);
|
||||||
|
_edje_message_process(em);
|
||||||
|
_edje_message_free(em);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
edje_message_signal_process(void)
|
edje_message_signal_process(void)
|
||||||
{
|
{
|
||||||
_edje_message_queue_process();
|
_edje_message_queue_process();
|
||||||
}
|
}
|
||||||
|
|
||||||
static Evas_List *msgq = NULL;
|
|
||||||
static Evas_List *tmp_msgq = NULL;
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
_edje_dummy_timer(void *data)
|
_edje_dummy_timer(void *data)
|
||||||
{
|
{
|
||||||
|
@ -482,8 +528,19 @@ _edje_message_queue_process(void)
|
||||||
for (i = 0; (i < 8) && (msgq); i++)
|
for (i = 0; (i < 8) && (msgq); i++)
|
||||||
{
|
{
|
||||||
/* a temporary message queue */
|
/* a temporary message queue */
|
||||||
tmp_msgq = msgq;
|
if (tmp_msgq)
|
||||||
msgq = NULL;
|
{
|
||||||
|
while (msgq)
|
||||||
|
{
|
||||||
|
tmp_msgq = evas_list_append(tmp_msgq, msgq->data);
|
||||||
|
msgq = evas_list_remove_list(msgq, msgq);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tmp_msgq = msgq;
|
||||||
|
msgq = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
while (tmp_msgq)
|
while (tmp_msgq)
|
||||||
{
|
{
|
||||||
|
@ -513,6 +570,14 @@ _edje_message_queue_clear(void)
|
||||||
msgq = evas_list_remove_list(msgq, msgq);
|
msgq = evas_list_remove_list(msgq, msgq);
|
||||||
_edje_message_free(em);
|
_edje_message_free(em);
|
||||||
}
|
}
|
||||||
|
while (tmp_msgq)
|
||||||
|
{
|
||||||
|
Edje_Message *em;
|
||||||
|
|
||||||
|
em = tmp_msgq->data;
|
||||||
|
tmp_msgq = evas_list_remove_list(tmp_msgq, tmp_msgq);
|
||||||
|
_edje_message_free(em);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
Loading…
Reference in New Issue