Eo: renamed the Magic for freed objects and better handle deleted objects.
authortasn <tasn>
Tue, 5 Jun 2012 12:05:06 +0000 (12:05 +0000)
committertasn <tasn@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Tue, 5 Jun 2012 12:05:06 +0000 (12:05 +0000)
Now we differentiate between deleted but not freed vs deleted and freed
objects.

git-svn-id: http://svn.enlightenment.org/svn/e/trunk/PROTO/eobj@71710 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

lib/eo.c
lib/eo_private.h

index 647bd9b..5dd58a4 100644 (file)
--- a/lib/eo.c
+++ b/lib/eo.c
@@ -1189,13 +1189,10 @@ eo_ref(const Eo *_obj)
 static inline void
 _eo_del_internal(Eo *obj)
 {
-   if (obj->del)
-      return;
    /* We need that for the event callbacks that may ref/unref. */
    obj->refcount++;
 
    eo_do(obj, eo_event_callback_call(EO_EV_DEL, NULL, NULL));
-   obj->del = EINA_TRUE;
 
    const Eo_Class *klass = eo_class_get(obj);
    Eo_Kls_Itr prev_state;
@@ -1222,13 +1219,14 @@ _eo_del_internal(Eo *obj)
         eo_composite_object_detach(obj, emb_obj);
      }
 
+   obj->del = EINA_TRUE;
    obj->refcount--;
 }
 
 static inline void
 _eo_free(Eo *obj)
 {
-   EINA_MAGIC_SET(obj, EO_DELETED_EINA_MAGIC);
+   EINA_MAGIC_SET(obj, EO_FREED_EINA_MAGIC);
    free(obj);
 }
 
@@ -1441,8 +1439,8 @@ eo_init(void)
      }
 
    eina_magic_string_static_set(EO_EINA_MAGIC, EO_EINA_MAGIC_STR);
-   eina_magic_string_static_set(EO_DELETED_EINA_MAGIC,
-         EO_DELETED_EINA_MAGIC_STR);
+   eina_magic_string_static_set(EO_FREED_EINA_MAGIC,
+         EO_FREED_EINA_MAGIC_STR);
    eina_magic_string_static_set(EO_CLASS_EINA_MAGIC,
          EO_CLASS_EINA_MAGIC_STR);
 
index 3559355..631ce01 100644 (file)
@@ -1,11 +1,11 @@
 #ifndef _EO_PRIVATE_H
 #define _EO_PRIVATE_H
 
-#define EO_EINA_MAGIC 0xa186bc32 /* Nothing magical about this number. */
+#define EO_EINA_MAGIC 0xa186bc32
 #define EO_EINA_MAGIC_STR "Eo"
-#define EO_DELETED_EINA_MAGIC 0xa186bb32 /* Nothing magical about this number. */
-#define EO_DELETED_EINA_MAGIC_STR "Eo - Deleted object"
-#define EO_CLASS_EINA_MAGIC 0xa186ba32 /* Nothing magical about this number. */
+#define EO_FREED_EINA_MAGIC 0xa186bb32
+#define EO_FREED_EINA_MAGIC_STR "Eo - Freed object"
+#define EO_CLASS_EINA_MAGIC 0xa186ba32
 #define EO_CLASS_EINA_MAGIC_STR "Eo Class"
 
 #define EO_MAGIC_RETURN_VAL(d, magic, ret) \