Ecore exe: Start using the eo destructor.
authorTom Hacohen <tom@stosb.com>
Tue, 26 Aug 2014 15:36:25 +0000 (16:36 +0100)
committerTom Hacohen <tom@stosb.com>
Tue, 26 Aug 2014 15:36:44 +0000 (16:36 +0100)
src/lib/ecore/ecore_exe.c
src/lib/ecore/ecore_exe.eo

index 40e35d3..d315999 100644 (file)
@@ -940,15 +940,24 @@ ecore_exe_tag_get(const Ecore_Exe *obj)
 EAPI void *
 ecore_exe_free(Ecore_Exe *obj)
 {
-   void *data;
-   int ok = 0;
-   int result;
-
    EINA_MAIN_LOOP_CHECK_RETURN_VAL(NULL);
    Ecore_Exe_Data *exe = eo_data_scope_get(obj, MY_CLASS);
    if (!eo_isa(obj, MY_CLASS))
       return NULL;
 
+   void *data = exe->data;
+   eo_del(obj);
+
+   return data;
+}
+
+EOLIAN static void
+_ecore_exe_eo_base_destructor(Eo *obj, Ecore_Exe_Data *exe)
+{
+   void *data;
+   int ok = 0;
+   int result;
+
    data = exe->data;
 
    if (exe->pre_free_cb)
@@ -990,10 +999,6 @@ ecore_exe_free(Ecore_Exe *obj)
 
    exes = eina_list_remove(exes, obj);
    IF_FREE(exe->tag);
-
-   eo_del(obj);
-
-   return data;
 }
 
 EAPI void
index 59aabb7..dcb624c 100644 (file)
@@ -20,6 +20,7 @@ class Ecore.Exe (Eo.Base, Efl.Control)
 
    }
    implements {
+        Eo.Base.destructor;
         Eo.Base.finalize;
         Efl.Control.suspend.set;
    }