Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/edje

Dir     : e17/libs/edje/src/lib


Modified Files:
        edje_main.c edje_message_queue.c edje_private.h 


Log Message:


ug callback that deletes the object that is bing walked for callbacks...
ouch.. fix.

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_main.c,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -3 -r1.42 -r1.43
--- edje_main.c 3 Apr 2005 11:42:59 -0000       1.42
+++ edje_main.c 28 Jul 2005 13:39:23 -0000      1.43
@@ -75,6 +75,12 @@
 void
 _edje_del(Edje *ed)
 {
+   if (ed->processing_messages)
+     {
+       ed->delete_me = 1;
+       return;
+     }
+   _edje_message_del(ed);
    _edje_file_del(ed);
    if (ed->path) free(ed->path);
    ed->path = NULL;
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_message_queue.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -3 -r1.16 -r1.17
--- edje_message_queue.c        14 Jan 2005 04:50:29 -0000      1.16
+++ edje_message_queue.c        28 Jul 2005 13:39:23 -0000      1.17
@@ -592,11 +592,19 @@
        while (tmp_msgq)
          {
             Edje_Message *em;
+            Edje *ed;
             
             em = tmp_msgq->data;
+            ed = em->edje;
+            ed->processing_messages++;
             tmp_msgq = evas_list_remove_list(tmp_msgq, tmp_msgq);
             _edje_message_process(em);
             _edje_message_free(em);
+            ed->processing_messages--;
+            if (ed->processing_messages == 0)
+              {
+                 if (ed->delete_me) _edje_del(ed);
+              }
          }
      }
    
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_private.h,v
retrieving revision 1.86
retrieving revision 1.87
diff -u -3 -r1.86 -r1.87
--- edje_private.h      26 Jul 2005 13:59:03 -0000      1.86
+++ edje_private.h      28 Jul 2005 13:39:23 -0000      1.87
@@ -473,6 +473,7 @@
       void *data;
    } text_change;
    
+   int                      processing_messages;
    struct {
       int                   num;
       void                (*func) (void *data, Evas_Object *obj, 
Edje_Message_Type type, int id, void *msg);




-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO September
19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to