summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaehyun Cho <jae_hyun.cho@samsung.com>2018-12-18 11:17:12 +0900
committerJaehyun Cho <jae_hyun.cho@samsung.com>2018-12-18 11:17:12 +0900
commit7a5589b14a97ccd2db1511f38e368f07236f31e2 (patch)
treec108692fc3f615b465ef4c36431cc462a11110e4
parent4a4d32b60df31e25f2ad406c19324592fc69669a (diff)
downloadefl-7a5589b14a97ccd2db1511f38e368f07236f31e2.tar.gz
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
-rw-r--r--src/lib/evas/canvas/efl_canvas_surface.c2
-rw-r--r--src/lib/evas/canvas/efl_canvas_surface.eo2
-rw-r--r--src/lib/evas/canvas/efl_canvas_surface_tbm.c23
-rw-r--r--src/lib/evas/canvas/efl_canvas_surface_tbm.eo2
-rw-r--r--src/lib/evas/canvas/efl_canvas_surface_wayland.c23
-rw-r--r--src/lib/evas/canvas/efl_canvas_surface_wayland.eo2
-rw-r--r--src/lib/evas/canvas/efl_canvas_surface_x11.c26
-rw-r--r--src/lib/evas/canvas/efl_canvas_surface_x11.eo2
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]]