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

Reply via email to