jaehyun pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=7a5589b14a97ccd2db1511f38e368f07236f31e2

commit 7a5589b14a97ccd2db1511f38e368f07236f31e2
Author: Jaehyun Cho <[email protected]>
Date:   Tue Dec 18 11:17:12 2018 +0900

    efl_canvas_surface: change mixin to abstract
    
    Summary:
    If Efl.Canvas.Surface is changed from mixin to abstract, then its sub
    classes do not need to inherit from Efl.Object to be a class.
    Moreover, Efl.Canvas.Surface's data can be derived to its sub classes
    easily.
    
    Reviewers: jpeg, segfaultxavi, woohyun, Hermet
    
    Subscribers: cedric, #reviewers, #committers
    
    Tags: #efl
    
    Differential Revision: https://phab.enlightenment.org/D7411
---
 src/lib/evas/canvas/efl_canvas_surface.c          |  2 +-
 src/lib/evas/canvas/efl_canvas_surface.eo         |  2 +-
 src/lib/evas/canvas/efl_canvas_surface_tbm.c      | 23 ++++++++++----------
 src/lib/evas/canvas/efl_canvas_surface_tbm.eo     |  2 +-
 src/lib/evas/canvas/efl_canvas_surface_wayland.c  | 23 ++++++++++----------
 src/lib/evas/canvas/efl_canvas_surface_wayland.eo |  2 +-
 src/lib/evas/canvas/efl_canvas_surface_x11.c      | 26 ++++++++++++-----------
 src/lib/evas/canvas/efl_canvas_surface_x11.eo     |  2 +-
 8 files changed, 43 insertions(+), 39 deletions(-)

diff --git a/src/lib/evas/canvas/efl_canvas_surface.c 
b/src/lib/evas/canvas/efl_canvas_surface.c
index a9993829b7..bc61a55815 100644
--- a/src/lib/evas/canvas/efl_canvas_surface.c
+++ b/src/lib/evas/canvas/efl_canvas_surface.c
@@ -1,6 +1,6 @@
 #include "efl_canvas_surface.h"
 
-#define MY_CLASS EFL_CANVAS_SURFACE_MIXIN
+#define MY_CLASS EFL_CANVAS_SURFACE_CLASS
 
 EOLIAN static Eo *
 _efl_canvas_surface_efl_object_constructor(Eo *eo, Efl_Canvas_Surface_Data *pd)
diff --git a/src/lib/evas/canvas/efl_canvas_surface.eo 
b/src/lib/evas/canvas/efl_canvas_surface.eo
index 5a113f333b..8946b20efa 100644
--- a/src/lib/evas/canvas/efl_canvas_surface.eo
+++ b/src/lib/evas/canvas/efl_canvas_surface.eo
@@ -1,4 +1,4 @@
-mixin Efl.Canvas.Surface (Efl.Interface, Efl.Canvas.Image_Internal)
+abstract Efl.Canvas.Surface (Efl.Canvas.Image_Internal)
 {
    [[Native surfaces usually bound to an externally-managed buffer.
 
diff --git a/src/lib/evas/canvas/efl_canvas_surface_tbm.c 
b/src/lib/evas/canvas/efl_canvas_surface_tbm.c
index 33ed98e2bf..a0524e48e9 100644
--- a/src/lib/evas/canvas/efl_canvas_surface_tbm.c
+++ b/src/lib/evas/canvas/efl_canvas_surface_tbm.c
@@ -4,13 +4,13 @@
 
 typedef struct _Efl_Canvas_Surface_Tbm_Data
 {
-   Efl_Canvas_Surface_Data *base;
 } Efl_Canvas_Surface_Tbm_Data;
 
 EOLIAN static Eo *
-_efl_canvas_surface_tbm_efl_object_constructor(Eo *eo, 
Efl_Canvas_Surface_Tbm_Data *pd)
+_efl_canvas_surface_tbm_efl_object_constructor(Eo *eo, 
Efl_Canvas_Surface_Tbm_Data *pd EINA_UNUSED)
 {
    Evas_Object_Protected_Data *obj;
+   Efl_Canvas_Surface_Data *sd;
 
    eo = efl_constructor(efl_super(eo, MY_CLASS));
    obj = efl_data_scope_get(eo, EFL_CANVAS_OBJECT_CLASS);
@@ -22,34 +22,35 @@ _efl_canvas_surface_tbm_efl_object_constructor(Eo *eo, 
Efl_Canvas_Surface_Tbm_Da
         return NULL;
      }
 
-   pd->base = efl_data_ref(eo, EFL_CANVAS_SURFACE_MIXIN);
-   pd->base->surf.type = EVAS_NATIVE_SURFACE_TBM;
+   sd = efl_data_scope_get(eo, EFL_CANVAS_SURFACE_CLASS);
+   sd->surf.type = EVAS_NATIVE_SURFACE_TBM;
    return eo;
 }
 
 EOLIAN static void
-_efl_canvas_surface_tbm_efl_object_destructor(Eo *eo, 
Efl_Canvas_Surface_Tbm_Data *pd)
+_efl_canvas_surface_tbm_efl_object_destructor(Eo *eo, 
Efl_Canvas_Surface_Tbm_Data *pd EINA_UNUSED)
 {
    Evas_Object_Protected_Data *obj;
 
    obj = efl_data_scope_get(eo, EFL_CANVAS_OBJECT_CLASS);
 
    ENFN->image_native_shutdown(ENC, EVAS_NATIVE_SURFACE_TBM);
-   efl_data_unref(eo, pd->base);
    efl_destructor(eo);
 }
 
 EOLIAN static Eina_Bool
-_efl_canvas_surface_tbm_efl_canvas_surface_native_buffer_set(Eo *eo, 
Efl_Canvas_Surface_Tbm_Data *pd, void *buffer)
+_efl_canvas_surface_tbm_efl_canvas_surface_native_buffer_set(Eo *eo, 
Efl_Canvas_Surface_Tbm_Data *pd EINA_UNUSED, void *buffer)
 {
-   pd->base->surf.data.tbm.buffer = buffer;
-   if (!_evas_image_native_surface_set(eo, &pd->base->surf))
+   Efl_Canvas_Surface_Data *sd = efl_data_scope_get(eo, 
EFL_CANVAS_SURFACE_CLASS);
+
+   sd->surf.data.tbm.buffer = buffer;
+   if (!_evas_image_native_surface_set(eo, &sd->surf))
      {
         ERR("failed to set native buffer");
-        pd->base->buffer = NULL;
+        sd->buffer = NULL;
         return EINA_FALSE;
      }
-   pd->base->buffer = buffer;
+   sd->buffer = buffer;
    return EINA_TRUE;
 }
 
diff --git a/src/lib/evas/canvas/efl_canvas_surface_tbm.eo 
b/src/lib/evas/canvas/efl_canvas_surface_tbm.eo
index 89b255cb47..7a3a8ee56f 100644
--- a/src/lib/evas/canvas/efl_canvas_surface_tbm.eo
+++ b/src/lib/evas/canvas/efl_canvas_surface_tbm.eo
@@ -1,4 +1,4 @@
-class Efl.Canvas.Surface_Tbm (Efl.Object, Efl.Canvas.Surface)
+class Efl.Canvas.Surface_Tbm (Efl.Canvas.Surface)
 {
    [[Native Tizen Buffer Manager surface for Efl canvas]]
 
diff --git a/src/lib/evas/canvas/efl_canvas_surface_wayland.c 
b/src/lib/evas/canvas/efl_canvas_surface_wayland.c
index 8e4e476e6c..394a1000f0 100644
--- a/src/lib/evas/canvas/efl_canvas_surface_wayland.c
+++ b/src/lib/evas/canvas/efl_canvas_surface_wayland.c
@@ -4,13 +4,13 @@
 
 typedef struct _Efl_Canvas_Surface_Wayland_Data
 {
-   Efl_Canvas_Surface_Data *base;
 } Efl_Canvas_Surface_Wayland_Data;
 
 EOLIAN static Eo *
-_efl_canvas_surface_wayland_efl_object_constructor(Eo *eo, 
Efl_Canvas_Surface_Wayland_Data *pd)
+_efl_canvas_surface_wayland_efl_object_constructor(Eo *eo, 
Efl_Canvas_Surface_Wayland_Data *pd EINA_UNUSED)
 {
    Evas_Object_Protected_Data *obj;
+   Efl_Canvas_Surface_Data *sd;
 
    eo = efl_constructor(efl_super(eo, MY_CLASS));
    obj = efl_data_scope_get(eo, EFL_CANVAS_OBJECT_CLASS);
@@ -22,34 +22,35 @@ _efl_canvas_surface_wayland_efl_object_constructor(Eo *eo, 
Efl_Canvas_Surface_Wa
         return NULL;
      }
 
-   pd->base = efl_data_ref(eo, EFL_CANVAS_SURFACE_MIXIN);
-   pd->base->surf.type = EVAS_NATIVE_SURFACE_WL;
+   sd = efl_data_scope_get(eo, EFL_CANVAS_SURFACE_CLASS);
+   sd->surf.type = EVAS_NATIVE_SURFACE_WL;
    return eo;
 }
 
 EOLIAN static void
-_efl_canvas_surface_wayland_efl_object_destructor(Eo *eo, 
Efl_Canvas_Surface_Wayland_Data *pd)
+_efl_canvas_surface_wayland_efl_object_destructor(Eo *eo, 
Efl_Canvas_Surface_Wayland_Data *pd EINA_UNUSED)
 {
    Evas_Object_Protected_Data *obj;
 
    obj = efl_data_scope_get(eo, EFL_CANVAS_OBJECT_CLASS);
 
    ENFN->image_native_shutdown(ENC, EVAS_NATIVE_SURFACE_WL);
-   efl_data_unref(eo, pd->base);
    efl_destructor(eo);
 }
 
 EOLIAN static Eina_Bool
-_efl_canvas_surface_wayland_efl_canvas_surface_native_buffer_set(Eo *eo, 
Efl_Canvas_Surface_Wayland_Data *pd, void *buffer)
+_efl_canvas_surface_wayland_efl_canvas_surface_native_buffer_set(Eo *eo, 
Efl_Canvas_Surface_Wayland_Data *pd EINA_UNUSED, void *buffer)
 {
-   pd->base->surf.data.wl.legacy_buffer = buffer;
-   if (!_evas_image_native_surface_set(eo, &pd->base->surf))
+   Efl_Canvas_Surface_Data *sd = efl_data_scope_get(eo, 
EFL_CANVAS_SURFACE_CLASS);
+
+   sd->surf.data.wl.legacy_buffer = buffer;
+   if (!_evas_image_native_surface_set(eo, &sd->surf))
      {
         ERR("failed to set native buffer");
-        pd->base->buffer = NULL;
+        sd->buffer = NULL;
         return EINA_FALSE;
      }
-   pd->base->buffer = buffer;
+   sd->buffer = buffer;
    return EINA_TRUE;
 }
 
diff --git a/src/lib/evas/canvas/efl_canvas_surface_wayland.eo 
b/src/lib/evas/canvas/efl_canvas_surface_wayland.eo
index e5e80140f7..e731898582 100644
--- a/src/lib/evas/canvas/efl_canvas_surface_wayland.eo
+++ b/src/lib/evas/canvas/efl_canvas_surface_wayland.eo
@@ -1,4 +1,4 @@
-class Efl.Canvas.Surface_Wayland (Efl.Object, Efl.Canvas.Surface)
+class Efl.Canvas.Surface_Wayland (Efl.Canvas.Surface)
 {
    [[Native Wayland surface for Efl canvas]]
 
diff --git a/src/lib/evas/canvas/efl_canvas_surface_x11.c 
b/src/lib/evas/canvas/efl_canvas_surface_x11.c
index 5dc10ddbbe..5b7c8472b9 100644
--- a/src/lib/evas/canvas/efl_canvas_surface_x11.c
+++ b/src/lib/evas/canvas/efl_canvas_surface_x11.c
@@ -4,14 +4,14 @@
 
 typedef struct _Efl_Canvas_Surface_X11_Data
 {
-   Efl_Canvas_Surface_Data *base;
    Efl_Canvas_Surface_X11_Pixmap px;
 } Efl_Canvas_Surface_X11_Data;
 
 EOLIAN static Eo *
-_efl_canvas_surface_x11_efl_object_constructor(Eo *eo, 
Efl_Canvas_Surface_X11_Data *pd)
+_efl_canvas_surface_x11_efl_object_constructor(Eo *eo, 
Efl_Canvas_Surface_X11_Data *pd EINA_UNUSED)
 {
    Evas_Object_Protected_Data *obj;
+   Efl_Canvas_Surface_Data *sd;
 
    eo = efl_constructor(efl_super(eo, MY_CLASS));
    obj = efl_data_scope_get(eo, EFL_CANVAS_OBJECT_CLASS);
@@ -23,36 +23,37 @@ _efl_canvas_surface_x11_efl_object_constructor(Eo *eo, 
Efl_Canvas_Surface_X11_Da
         return NULL;
      }
 
-   pd->base = efl_data_ref(eo, EFL_CANVAS_SURFACE_MIXIN);
-   pd->base->surf.version = EVAS_NATIVE_SURFACE_VERSION;
-   pd->base->surf.type = EVAS_NATIVE_SURFACE_X11;
+   sd = efl_data_scope_get(eo, EFL_CANVAS_SURFACE_CLASS);
+   sd->surf.version = EVAS_NATIVE_SURFACE_VERSION;
+   sd->surf.type = EVAS_NATIVE_SURFACE_X11;
    return eo;
 }
 
 EOLIAN static void
-_efl_canvas_surface_x11_efl_object_destructor(Eo *eo, 
Efl_Canvas_Surface_X11_Data *pd)
+_efl_canvas_surface_x11_efl_object_destructor(Eo *eo, 
Efl_Canvas_Surface_X11_Data *pd EINA_UNUSED)
 {
    Evas_Object_Protected_Data *obj;
 
    obj = efl_data_scope_get(eo, EFL_CANVAS_OBJECT_CLASS);
 
    ENFN->image_native_shutdown(ENC, EVAS_NATIVE_SURFACE_X11);
-   efl_data_unref(eo, pd->base);
    efl_destructor(eo);
 }
 
 EOLIAN static Eina_Bool
 _efl_canvas_surface_x11_pixmap_set(Eo *eo, Efl_Canvas_Surface_X11_Data *pd 
EINA_UNUSED, void *visual, unsigned long pixmap)
 {
+   Efl_Canvas_Surface_Data *sd = efl_data_scope_get(eo, 
EFL_CANVAS_SURFACE_CLASS);
+
    pd->px.pixmap = pixmap;
    pd->px.visual = visual;
-   if (!_evas_image_native_surface_set(eo, &pd->base->surf))
+   if (!_evas_image_native_surface_set(eo, &sd->surf))
      {
         ERR("failed to set native buffer");
-        pd->base->buffer = NULL;
+        sd->buffer = NULL;
         return EINA_FALSE;
      }
-   pd->base->buffer = &pd->px;
+   sd->buffer = &pd->px;
    return EINA_TRUE;
 }
 
@@ -67,18 +68,19 @@ EOLIAN static Eina_Bool
 _efl_canvas_surface_x11_efl_canvas_surface_native_buffer_set(Eo *eo, 
Efl_Canvas_Surface_X11_Data *pd, void *buffer)
 {
    Efl_Canvas_Surface_X11_Pixmap *px = buffer;
+   Efl_Canvas_Surface_Data *sd = efl_data_scope_get(eo, 
EFL_CANVAS_SURFACE_CLASS);
 
    if (px)
      {
         pd->px.pixmap = px->pixmap;
         pd->px.visual = px->visual;
-        pd->base->buffer = &pd->px;
+        sd->buffer = &pd->px;
      }
    else
      {
         pd->px.pixmap = 0L;
         pd->px.visual = NULL;
-        pd->base->buffer = NULL;
+        sd->buffer = NULL;
      }
    return efl_canvas_surface_x11_pixmap_set(eo, pd->px.visual, pd->px.pixmap);
 }
diff --git a/src/lib/evas/canvas/efl_canvas_surface_x11.eo 
b/src/lib/evas/canvas/efl_canvas_surface_x11.eo
index 6f4744d123..22b3586497 100644
--- a/src/lib/evas/canvas/efl_canvas_surface_x11.eo
+++ b/src/lib/evas/canvas/efl_canvas_surface_x11.eo
@@ -5,7 +5,7 @@ struct Efl.Canvas.Surface_X11_Pixmap
    pixmap: ulong;  [[X11 Pixmap ID.]]
 }
 
-class Efl.Canvas.Surface_X11 (Efl.Object, Efl.Canvas.Surface)
+class Efl.Canvas.Surface_X11 (Efl.Canvas.Surface)
 {
    [[Native X11 surface for Efl canvas]]
 

-- 


Reply via email to