cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=37d6bc03fda9a0ef3e5ffe27d2f687fa3dfa28e8

commit 37d6bc03fda9a0ef3e5ffe27d2f687fa3dfa28e8
Author: Cedric BAIL <[email protected]>
Date:   Tue Sep 26 11:13:06 2017 -0700

    ecore: we can actually inherit from Efl.Object, just not in the first 
position.
---
 src/lib/ecore/efl_io_closer_fd.c  | 21 +++++----------------
 src/lib/ecore/efl_io_closer_fd.eo |  3 ++-
 2 files changed, 7 insertions(+), 17 deletions(-)

diff --git a/src/lib/ecore/efl_io_closer_fd.c b/src/lib/ecore/efl_io_closer_fd.c
index e55de422af..3696d176bb 100644
--- a/src/lib/ecore/efl_io_closer_fd.c
+++ b/src/lib/ecore/efl_io_closer_fd.c
@@ -8,7 +8,7 @@
 #include <fcntl.h>
 #include "ecore_private.h"
 
-#define MY_CLASS EFL_IO_CLOSER_FD_CLASS
+#define MY_CLASS EFL_IO_CLOSER_FD_MIXIN
 
 typedef struct _Efl_Io_Closer_Fd_Data
 {
@@ -16,28 +16,25 @@ typedef struct _Efl_Io_Closer_Fd_Data
 
    Eina_Bool close_on_exec;
    Eina_Bool close_on_destructor;
-   Eina_Bool initialized;
 } Efl_Io_Closer_Fd_Data;
 
-static void
-_efl_io_closer_initialize(Efl_Io_Closer_Fd_Data *pd)
+static Efl_Object *
+_efl_io_closer_fd_efl_object_constructor(Eo *obj, Efl_Io_Closer_Fd_Data *pd)
 {
-   if (pd->initialized) return ;
    pd->fd = -1;
-   pd->initialized = EINA_TRUE;
+
+   return efl_constructor(efl_super(obj, MY_CLASS));
 }
 
 EOLIAN static void
 _efl_io_closer_fd_closer_fd_set(Eo *o EINA_UNUSED, Efl_Io_Closer_Fd_Data *pd, 
int fd)
 {
-   _efl_io_closer_initialize(pd);
    pd->fd = fd;
 }
 
 EOLIAN static int
 _efl_io_closer_fd_closer_fd_get(Eo *o EINA_UNUSED, Efl_Io_Closer_Fd_Data *pd)
 {
-   _efl_io_closer_initialize(pd);
    return pd->fd;
 }
 
@@ -47,7 +44,6 @@ _efl_io_closer_fd_efl_io_closer_close(Eo *o, 
Efl_Io_Closer_Fd_Data *pd EINA_UNUS
    int fd;
    Eina_Error err = 0;
 
-   _efl_io_closer_initialize(pd);
    fd = efl_io_closer_fd_get(o);
 
    EINA_SAFETY_ON_TRUE_RETURN_VAL(fd < 0, EBADF);
@@ -61,15 +57,12 @@ _efl_io_closer_fd_efl_io_closer_close(Eo *o, 
Efl_Io_Closer_Fd_Data *pd EINA_UNUS
 EOLIAN static Eina_Bool
 _efl_io_closer_fd_efl_io_closer_closed_get(Eo *o, Efl_Io_Closer_Fd_Data *pd 
EINA_UNUSED)
 {
-   _efl_io_closer_initialize(pd);
    return efl_io_closer_fd_get(o) < 0;
 }
 
 EOLIAN static Eina_Bool
 _efl_io_closer_fd_efl_io_closer_close_on_exec_set(Eo *o, Efl_Io_Closer_Fd_Data 
*pd, Eina_Bool close_on_exec)
 {
-   _efl_io_closer_initialize(pd);
-
 #ifdef _WIN32
    DBG("close on exec is not supported on windows");
    pd->close_on_exec = close_on_exec;
@@ -101,8 +94,6 @@ _efl_io_closer_fd_efl_io_closer_close_on_exec_set(Eo *o, 
Efl_Io_Closer_Fd_Data *
 EOLIAN static Eina_Bool
 _efl_io_closer_fd_efl_io_closer_close_on_exec_get(Eo *o, Efl_Io_Closer_Fd_Data 
*pd)
 {
-   _efl_io_closer_initialize(pd);
-
 #ifdef _WIN32
    return pd->close_on_exec;
    (void)o;
@@ -130,14 +121,12 @@ _efl_io_closer_fd_efl_io_closer_close_on_exec_get(Eo *o, 
Efl_Io_Closer_Fd_Data *
 EOLIAN static void
 _efl_io_closer_fd_efl_io_closer_close_on_destructor_set(Eo *o EINA_UNUSED, 
Efl_Io_Closer_Fd_Data *pd, Eina_Bool close_on_destructor)
 {
-   _efl_io_closer_initialize(pd);
    pd->close_on_destructor = close_on_destructor;
 }
 
 EOLIAN static Eina_Bool
 _efl_io_closer_fd_efl_io_closer_close_on_destructor_get(Eo *o EINA_UNUSED, 
Efl_Io_Closer_Fd_Data *pd)
 {
-   _efl_io_closer_initialize(pd);
    return pd->close_on_destructor;
 }
 
diff --git a/src/lib/ecore/efl_io_closer_fd.eo 
b/src/lib/ecore/efl_io_closer_fd.eo
index 8c7f9920e1..9a95c3a777 100644
--- a/src/lib/ecore/efl_io_closer_fd.eo
+++ b/src/lib/ecore/efl_io_closer_fd.eo
@@ -1,4 +1,4 @@
-mixin Efl.Io.Closer.Fd (Efl.Io.Closer) {
+mixin Efl.Io.Closer.Fd (Efl.Io.Closer, Efl.Object) {
     [[Close fd using close(2).
 
       @since 1.19
@@ -16,6 +16,7 @@ mixin Efl.Io.Closer.Fd (Efl.Io.Closer) {
     }
 
     implements {
+        Efl.Object.constructor;
         Efl.Io.Closer.close;
         Efl.Io.Closer.closed { get; }
         Efl.Io.Closer.close_on_exec { get; set; }

-- 


Reply via email to