Enlightenment CVS committal
Author : raster
Project : e17
Module : libs/edje
Dir : e17/libs/edje/src/lib
Modified Files:
Edje.h edje_message_queue.c
Log Message:
more message queue calls
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/Edje.h,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -3 -r1.36 -r1.37
--- Edje.h 11 Sep 2004 02:41:23 -0000 1.36
+++ Edje.h 11 Sep 2004 02:59:23 -0000 1.37
@@ -193,10 +193,11 @@
void edje_object_part_drag_page (Evas_Object *obj, const char *part,
double dx, double dy);
/* edje_message_queue.c */
- 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_message_signal_process (void);
+ 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_signal_process (Evas_Object *obj);
+
+ void edje_message_signal_process (void);
#ifdef __cplusplus
}
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_message_queue.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- edje_message_queue.c 11 Sep 2004 02:41:23 -0000 1.9
+++ edje_message_queue.c 11 Sep 2004 02:59:23 -0000 1.10
@@ -4,6 +4,9 @@
Ecore_Job *job = NULL;
+static Evas_List *msgq = NULL;
+static Evas_List *tmp_msgq = NULL;
+
void
edje_object_message_send(Evas_Object *obj, Edje_Message_Type type, int id, void *msg)
{
@@ -25,14 +28,57 @@
}
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
edje_message_signal_process(void)
{
_edje_message_queue_process();
}
-static Evas_List *msgq = NULL;
-static Evas_List *tmp_msgq = NULL;
-
static int
_edje_dummy_timer(void *data)
{
@@ -482,8 +528,19 @@
for (i = 0; (i < 8) && (msgq); i++)
{
/* a temporary message queue */
- tmp_msgq = msgq;
- msgq = NULL;
+ if (tmp_msgq)
+ {
+ 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)
{
@@ -513,6 +570,14 @@
msgq = evas_list_remove_list(msgq, msgq);
_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
-------------------------------------------------------
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM.
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs