evas: Remove common interface and use provider_find

Evas.Common_Interface not only had a bad name, it also
wasn't in line with how we can get a loop object, for
instance.

Use eo_provider_find in each implementing class.
This commit is contained in:
Jean-Philippe Andre 2016-06-21 15:45:31 +09:00
parent dfe7e8892a
commit 269fc4f7a6
27 changed files with 76 additions and 75 deletions

View File

@ -8,7 +8,6 @@ evas_eolian_pub_files = \
lib/evas/canvas/efl_canvas_text.eo \ lib/evas/canvas/efl_canvas_text.eo \
lib/evas/canvas/efl_canvas_text_cursor.eo \ lib/evas/canvas/efl_canvas_text_cursor.eo \
lib/evas/canvas/efl_canvas_group.eo \ lib/evas/canvas/efl_canvas_group.eo \
lib/evas/canvas/evas_common_interface.eo \
lib/evas/canvas/evas_canvas.eo \ lib/evas/canvas/evas_canvas.eo \
lib/evas/canvas/efl_canvas_image_internal.eo \ lib/evas/canvas/efl_canvas_image_internal.eo \
lib/evas/canvas/efl_ui_draggable.eo \ lib/evas/canvas/efl_ui_draggable.eo \
@ -153,7 +152,6 @@ lib_evas_libevas_la_SOURCES += \
lib/evas/canvas/common_interfaces.c \ lib/evas/canvas/common_interfaces.c \
lib/evas/canvas/evas_callbacks.c \ lib/evas/canvas/evas_callbacks.c \
lib/evas/canvas/evas_clip.c \ lib/evas/canvas/evas_clip.c \
lib/evas/canvas/evas_common_interface.c \
lib/evas/canvas/evas_data.c \ lib/evas/canvas/evas_data.c \
lib/evas/canvas/evas_device.c \ lib/evas/canvas/evas_device.c \
lib/evas/canvas/evas_events.c \ lib/evas/canvas/evas_events.c \

View File

@ -353,7 +353,7 @@ _edje_real_part_free(Edje *ed, Edje_Real_Part *rp)
if ((rp->type == EDJE_RP_TYPE_SWALLOW) && (rp->typedata.swallow) if ((rp->type == EDJE_RP_TYPE_SWALLOW) && (rp->typedata.swallow)
&& (rp->typedata.swallow->swallowed_object)) && (rp->typedata.swallow->swallowed_object))
{ {
eo_parent_set(rp->typedata.swallow->swallowed_object, evas_common_evas_get(ed->obj)); eo_parent_set(rp->typedata.swallow->swallowed_object, evas_object_evas_get(ed->obj));
evas_object_smart_member_del(rp->typedata.swallow->swallowed_object); evas_object_smart_member_del(rp->typedata.swallow->swallowed_object);
evas_object_event_callback_del(rp->typedata.swallow->swallowed_object, evas_object_event_callback_del(rp->typedata.swallow->swallowed_object,
EVAS_CALLBACK_FREE, _edje_object_part_swallow_free_cb); EVAS_CALLBACK_FREE, _edje_object_part_swallow_free_cb);

View File

@ -5101,7 +5101,7 @@ _eo_unparent_helper(Eo *child, Eo *parent)
{ {
if (eo_parent_get(child) == parent) if (eo_parent_get(child) == parent)
{ {
eo_parent_set(child, evas_common_evas_get(parent)); eo_parent_set(child, evas_object_evas_get(parent));
} }
} }

View File

@ -35,7 +35,7 @@ _efl_ui_grid_static_efl_pack_layout_layout_do(Eo_Class *klass EINA_UNUSED,
gd = eo_data_scope_get(obj, EFL_UI_GRID_CLASS); gd = eo_data_scope_get(obj, EFL_UI_GRID_CLASS);
if (!gd->items) return; if (!gd->items) return;
e = evas_common_evas_get(obj); e = evas_object_evas_get(obj);
eo_event_freeze(e); eo_event_freeze(e);
efl_gfx_position_get(obj, &x, &y); efl_gfx_position_get(obj, &x, &y);

View File

@ -1299,7 +1299,7 @@ _efl_ui_internal_text_interactive_eo_base_finalize(Eo *obj, Efl_Ui_Internal_Text
{ {
const char *ctx_id; const char *ctx_id;
const Ecore_IMF_Context_Info *ctx_info; const Ecore_IMF_Context_Info *ctx_info;
Evas *evas = evas_common_evas_get(obj); Evas *evas = evas_object_evas_get(obj);
// _need_imf(); // _need_imf();
en->commit_cancel = EINA_FALSE; en->commit_cancel = EINA_FALSE;

View File

@ -667,7 +667,7 @@ _eo_unparent_helper(Eo *child, Eo *parent)
{ {
if (eo_parent_get(child) == parent) if (eo_parent_get(child) == parent)
{ {
eo_parent_set(child, evas_common_evas_get(parent)); eo_parent_set(child, evas_object_evas_get(parent));
} }
} }

View File

@ -62,8 +62,6 @@
* @} * @}
*/ */
#include "canvas/evas_common_interface.eo.h"
#include "canvas/efl_canvas_object.eo.h" #include "canvas/efl_canvas_object.eo.h"
#endif /* EFL_EO_API_SUPPORT */ #endif /* EFL_EO_API_SUPPORT */

View File

@ -1471,9 +1471,16 @@ EAPI Evas_Render_Op evas_object_render_op_get(const Evas_Object *obj);
*/ */
EAPI Eina_Bool evas_object_static_clip_get(const Evas_Object *obj); EAPI Eina_Bool evas_object_static_clip_get(const Evas_Object *obj);
#include "canvas/evas_common_interface.eo.legacy.h"
#include "canvas/efl_canvas_object.eo.legacy.h" #include "canvas/efl_canvas_object.eo.legacy.h"
/**
* @brief Get the Evas to which this object belongs to
*
* The object may be an evas object, an elementary object or window, or an
* evas 3D / VG object.
*/
EAPI Evas *evas_object_evas_get(const Eo *obj);
/** /**
* @} * @}
*/ */

View File

@ -1,9 +1,8 @@
import evas_types; import evas_types;
import efl_text_types; import efl_text_types;
abstract Efl.Canvas.Object (Eo.Base, Evas.Common_Interface, Efl.Gfx, abstract Efl.Canvas.Object (Eo.Base, Efl.Gfx, Efl.Gfx.Stack, Efl.Animator,
Efl.Gfx.Stack, Efl.Animator, Efl.Input.Interface, Efl.Input.Interface, Efl.Gfx.Size.Hint)
Efl.Gfx.Size.Hint)
{ {
legacy_prefix: evas_object; legacy_prefix: evas_object;
data: Evas_Object_Protected_Data; data: Evas_Object_Protected_Data;
@ -671,7 +670,7 @@ abstract Efl.Canvas.Object (Eo.Base, Evas.Common_Interface, Efl.Gfx,
Eo.Base.constructor; Eo.Base.constructor;
Eo.Base.destructor; Eo.Base.destructor;
Eo.Base.dbg_info_get; Eo.Base.dbg_info_get;
Evas.Common_Interface.evas.get; Eo.Base.provider_find;
Efl.Gfx.visible.set; Efl.Gfx.visible.set;
Efl.Gfx.visible.get; Efl.Gfx.visible.get;
Efl.Gfx.color.set; Efl.Gfx.color.set;

View File

@ -1,8 +1,7 @@
import evas_types; import evas_types;
import efl_event_types; import efl_event_types;
class Evas.Canvas (Eo.Base, Efl.Canvas, Evas.Common_Interface, Efl.Animator, class Evas.Canvas (Eo.Base, Efl.Canvas, Efl.Animator, Efl.Input.Interface)
Efl.Input.Interface)
{ {
legacy_prefix: evas; legacy_prefix: evas;
data: Evas_Public_Data; data: Evas_Public_Data;
@ -1195,7 +1194,7 @@ class Evas.Canvas (Eo.Base, Efl.Canvas, Evas.Common_Interface, Efl.Animator,
Eo.Base.destructor; Eo.Base.destructor;
Eo.Base.event_thaw; Eo.Base.event_thaw;
Eo.Base.event_freeze; Eo.Base.event_freeze;
Evas.Common_Interface.evas.get; Eo.Base.provider_find;
} }
events { events {
render,flush,pre @beta; render,flush,pre @beta;

View File

@ -1,6 +1,6 @@
import evas_types; import evas_types;
class Evas.Canvas3D.Camera (Evas.Canvas3D.Object, Evas.Common_Interface) class Evas.Canvas3D.Camera (Evas.Canvas3D.Object)
{ {
data: Evas_Canvas3D_Camera_Data; data: Evas_Canvas3D_Camera_Data;
methods { methods {

View File

@ -1,6 +1,6 @@
import evas_types; import evas_types;
class Evas.Canvas3D.Light (Evas.Canvas3D.Object, Evas.Common_Interface) class Evas.Canvas3D.Light (Evas.Canvas3D.Object)
{ {
data: Evas_Canvas3D_Light_Data; data: Evas_Canvas3D_Light_Data;

View File

@ -1,4 +1,4 @@
class Evas.Canvas3D.Material (Evas.Canvas3D.Object, Evas.Common_Interface) class Evas.Canvas3D.Material (Evas.Canvas3D.Object)
{ {
data: Evas_Canvas3D_Material_Data; data: Evas_Canvas3D_Material_Data;
methods { methods {

View File

@ -1,7 +1,7 @@
import eina_types; import eina_types;
import evas_types; import evas_types;
class Evas.Canvas3D.Mesh (Evas.Canvas3D.Object, Evas.Common_Interface, Efl.File) class Evas.Canvas3D.Mesh (Evas.Canvas3D.Object, Efl.File)
{ {
data: Evas_Canvas3D_Mesh_Data; data: Evas_Canvas3D_Mesh_Data;

View File

@ -1,6 +1,6 @@
import evas_types; import evas_types;
class Evas.Canvas3D.Node (Evas.Canvas3D.Object, Evas.Common_Interface) class Evas.Canvas3D.Node (Evas.Canvas3D.Object)
{ {
data: Evas_Canvas3D_Node_Data; data: Evas_Canvas3D_Node_Data;
methods { methods {

View File

@ -17,9 +17,11 @@ _evas_canvas3d_object_eo_base_constructor(Eo *obj, Evas_Canvas3D_Object_Data *pd
} }
EOLIAN static Evas * EOLIAN static Evas *
_evas_canvas3d_object_evas_common_interface_evas_get(Eo *obj EINA_UNUSED, Evas_Canvas3D_Object_Data *pd) _evas_canvas3d_object_eo_base_provider_find(Eo *obj, Evas_Canvas3D_Object_Data *pd, const Eo_Class *klass)
{ {
return pd->evas; if (klass == EVAS_CANVAS_CLASS)
return pd->evas;
return eo_provider_find(eo_super(obj, MY_CLASS), klass);
} }
EOLIAN static void EOLIAN static void

View File

@ -1,6 +1,6 @@
import evas_types; import evas_types;
class Evas.Canvas3D.Object (Eo.Base, Evas.Common_Interface) class Evas.Canvas3D.Object (Eo.Base)
{ {
data: Evas_Canvas3D_Object_Data; data: Evas_Canvas3D_Object_Data;
methods { methods {
@ -68,7 +68,7 @@ class Evas.Canvas3D.Object (Eo.Base, Evas.Common_Interface)
Eo.Base.constructor; Eo.Base.constructor;
Eo.Base.event_callback_priority_add; Eo.Base.event_callback_priority_add;
Eo.Base.event_callback_del; Eo.Base.event_callback_del;
Evas.Common_Interface.evas.get; Eo.Base.provider_find;
} }
events { events {
clicked; [[Clicked Event.]] clicked; [[Clicked Event.]]

View File

@ -1,6 +1,6 @@
import evas_types; import evas_types;
class Evas.Canvas3D.Primitive (Evas.Canvas3D.Object, Evas.Common_Interface) class Evas.Canvas3D.Primitive (Evas.Canvas3D.Object)
{ {
data: Evas_Canvas3D_Primitive_Data; data: Evas_Canvas3D_Primitive_Data;

View File

@ -1,6 +1,6 @@
import evas_types; import evas_types;
class Evas.Canvas3D.Scene (Evas.Canvas3D.Object, Evas.Common_Interface) class Evas.Canvas3D.Scene (Evas.Canvas3D.Object)
{ {
data: Evas_Canvas3D_Scene_Data; data: Evas_Canvas3D_Scene_Data;
methods { methods {

View File

@ -54,7 +54,7 @@ _texture_proxy_subrender(Evas_Canvas3D_Texture *obj)
{ {
/* Code taken from _proxy_subrender() in file evas_object_image.c */ /* Code taken from _proxy_subrender() in file evas_object_image.c */
Eo *evas = NULL; Eo *evas = NULL;
evas = evas_common_evas_get(obj); evas = evas_object_evas_get(obj);
Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS); Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS);
Evas_Canvas3D_Texture_Data *pd = eo_data_scope_get(obj, MY_CLASS); Evas_Canvas3D_Texture_Data *pd = eo_data_scope_get(obj, MY_CLASS);
Evas_Object_Protected_Data *source; Evas_Object_Protected_Data *source;
@ -165,7 +165,7 @@ _texture_fini(Evas_Canvas3D_Texture *obj)
void *data = NULL; void *data = NULL;
Evas_Canvas3D_Material_Data *material = NULL; Evas_Canvas3D_Material_Data *material = NULL;
evas = evas_common_evas_get(obj); evas = evas_object_evas_get(obj);
Evas_Canvas3D_Texture_Data *pd = eo_data_scope_get(obj, MY_CLASS); Evas_Canvas3D_Texture_Data *pd = eo_data_scope_get(obj, MY_CLASS);
if (pd->engine_data) if (pd->engine_data)
@ -224,7 +224,7 @@ _evas_canvas3d_texture_evas_canvas3d_object_update_notify(Eo *obj, Evas_Canvas3D
if (pd->source) if (pd->source)
{ {
Eo *evas = NULL; Eo *evas = NULL;
evas = evas_common_evas_get(obj); evas = evas_object_evas_get(obj);
Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS); Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS);
Evas_Object_Protected_Data *src = eo_data_scope_get(pd->source, EFL_CANVAS_OBJECT_CLASS); Evas_Object_Protected_Data *src = eo_data_scope_get(pd->source, EFL_CANVAS_OBJECT_CLASS);
@ -343,7 +343,7 @@ _evas_canvas3d_texture_data_set(Eo *obj, Evas_Canvas3D_Texture_Data *pd,
{ {
Eo *evas = NULL; Eo *evas = NULL;
void *image = NULL; void *image = NULL;
evas = evas_common_evas_get(obj); evas = evas_object_evas_get(obj);
Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS); Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS);
if (!pd->engine_data && e->engine.func->texture_new) if (!pd->engine_data && e->engine.func->texture_new)
@ -378,7 +378,7 @@ _evas_canvas3d_texture_file_set(Eo *obj, Evas_Canvas3D_Texture_Data *pd, const c
Eo *evas = NULL; Eo *evas = NULL;
void *image; void *image;
evas = evas_common_evas_get(obj); evas = evas_object_evas_get(obj);
Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS); Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS);
if (!pd->engine_data && e->engine.func->texture_new) if (!pd->engine_data && e->engine.func->texture_new)
@ -406,7 +406,7 @@ EAPI void
_evas_canvas3d_texture_source_set(Eo *obj , Evas_Canvas3D_Texture_Data *pd, Evas_Object *source) _evas_canvas3d_texture_source_set(Eo *obj , Evas_Canvas3D_Texture_Data *pd, Evas_Object *source)
{ {
Eo *evas = NULL; Eo *evas = NULL;
evas = evas_common_evas_get(obj); evas = evas_object_evas_get(obj);
Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS); Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS);
Evas_Object_Protected_Data *src; Evas_Object_Protected_Data *src;
@ -483,7 +483,7 @@ _evas_canvas3d_texture_color_format_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D
{ {
Evas_Colorspace format = -1; Evas_Colorspace format = -1;
Eo *evas = NULL; Eo *evas = NULL;
evas = evas_common_evas_get(obj); evas = evas_object_evas_get(obj);
Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS); Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS);
if (e->engine.func->image_colorspace_get && if (e->engine.func->image_colorspace_get &&
@ -502,7 +502,7 @@ EOLIAN static void
_evas_canvas3d_texture_size_get(const Eo *obj, Evas_Canvas3D_Texture_Data *pd, int *w, int *h) _evas_canvas3d_texture_size_get(const Eo *obj, Evas_Canvas3D_Texture_Data *pd, int *w, int *h)
{ {
Eo *evas = NULL; Eo *evas = NULL;
evas = evas_common_evas_get(obj); evas = evas_object_evas_get(obj);
Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS); Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS);
if (e->engine.func->texture_size_get) if (e->engine.func->texture_size_get)
{ {
@ -515,7 +515,7 @@ EOLIAN static void
_evas_canvas3d_texture_wrap_set(Eo *obj, Evas_Canvas3D_Texture_Data *pd, Evas_Canvas3D_Wrap_Mode s, Evas_Canvas3D_Wrap_Mode t) _evas_canvas3d_texture_wrap_set(Eo *obj, Evas_Canvas3D_Texture_Data *pd, Evas_Canvas3D_Wrap_Mode s, Evas_Canvas3D_Wrap_Mode t)
{ {
Eo *evas = NULL; Eo *evas = NULL;
evas = evas_common_evas_get(obj); evas = evas_object_evas_get(obj);
Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS); Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS);
if (e->engine.func->texture_wrap_set) if (e->engine.func->texture_wrap_set)
{ {
@ -529,7 +529,7 @@ EOLIAN static void
_evas_canvas3d_texture_wrap_get(Eo *obj, Evas_Canvas3D_Texture_Data *pd, Evas_Canvas3D_Wrap_Mode *s, Evas_Canvas3D_Wrap_Mode *t) _evas_canvas3d_texture_wrap_get(Eo *obj, Evas_Canvas3D_Texture_Data *pd, Evas_Canvas3D_Wrap_Mode *s, Evas_Canvas3D_Wrap_Mode *t)
{ {
Eo *evas = NULL; Eo *evas = NULL;
evas = evas_common_evas_get(obj); evas = evas_object_evas_get(obj);
Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS); Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS);
if (e->engine.func->texture_wrap_set) if (e->engine.func->texture_wrap_set)
{ {
@ -542,7 +542,7 @@ EOLIAN static void
_evas_canvas3d_texture_filter_set(Eo *obj, Evas_Canvas3D_Texture_Data *pd, Evas_Canvas3D_Texture_Filter min, Evas_Canvas3D_Texture_Filter mag) _evas_canvas3d_texture_filter_set(Eo *obj, Evas_Canvas3D_Texture_Data *pd, Evas_Canvas3D_Texture_Filter min, Evas_Canvas3D_Texture_Filter mag)
{ {
Eo *evas = NULL; Eo *evas = NULL;
evas = evas_common_evas_get(obj); evas = evas_object_evas_get(obj);
Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS); Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS);
if (e->engine.func->texture_filter_set) if (e->engine.func->texture_filter_set)
{ {
@ -556,7 +556,7 @@ EOLIAN static void
_evas_canvas3d_texture_filter_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Texture_Data *pd, Evas_Canvas3D_Texture_Filter *min, Evas_Canvas3D_Texture_Filter *mag) _evas_canvas3d_texture_filter_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Texture_Data *pd, Evas_Canvas3D_Texture_Filter *min, Evas_Canvas3D_Texture_Filter *mag)
{ {
Eo *evas = NULL; Eo *evas = NULL;
evas = evas_common_evas_get(obj); evas = evas_object_evas_get(obj);
Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS); Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS);
if (e->engine.func->texture_filter_get) if (e->engine.func->texture_filter_get)
{ {

View File

@ -1,6 +1,6 @@
type @extern Evas_Colorspace: int; /* FIXME: Need to get emile migrated. */ type @extern Evas_Colorspace: int; /* FIXME: Need to get emile migrated. */
class Evas.Canvas3D.Texture (Evas.Canvas3D.Object, Evas.Common_Interface) class Evas.Canvas3D.Texture (Evas.Canvas3D.Object)
{ {
data : Evas_Canvas3D_Texture_Data; data : Evas_Canvas3D_Texture_Data;
methods { methods {

View File

@ -1,3 +0,0 @@
#include "evas_common_private.h"
#include "evas_private.h"
#include "canvas/evas_common_interface.eo.c"

View File

@ -1,15 +0,0 @@
interface Evas.Common_Interface ()
{
eo_prefix: evas_common;
methods {
@property evas {
get {
legacy: evas_object_evas_get;
}
values {
/* FIXME: This is actually wrong, should return Evas. */
ret: Evas.Common_Interface;
}
}
}
}

View File

@ -586,10 +586,13 @@ evas_data_argb_unpremul(unsigned int *data, unsigned int len)
evas_common_convert_argb_unpremul(data, len); evas_common_convert_argb_unpremul(data, len);
} }
EOLIAN static Evas * EOLIAN static Eo *
_evas_canvas_evas_common_interface_evas_get(Eo *eo_e, Evas_Public_Data *e EINA_UNUSED) _evas_canvas_eo_base_provider_find(Eo *eo_e, Evas_Public_Data *e EINA_UNUSED,
const Eo_Class *klass)
{ {
return (Evas *)eo_e; if (klass == EVAS_CANVAS_CLASS)
return eo_e;
return eo_provider_find(eo_super(eo_e, MY_CLASS), klass);
} }
Ector_Surface * Ector_Surface *

View File

@ -151,16 +151,18 @@ EOLIAN static Eo *
_efl_canvas_object_eo_base_constructor(Eo *eo_obj, Evas_Object_Protected_Data *obj) _efl_canvas_object_eo_base_constructor(Eo *eo_obj, Evas_Object_Protected_Data *obj)
{ {
Eo *parent = NULL; Eo *parent = NULL;
Evas *evas;
eo_obj = eo_constructor(eo_super(eo_obj, MY_CLASS)); eo_obj = eo_constructor(eo_super(eo_obj, MY_CLASS));
efl_canvas_object_type_set(eo_obj, MY_CLASS_NAME); efl_canvas_object_type_set(eo_obj, MY_CLASS_NAME);
eo_manual_free_set(eo_obj, EINA_TRUE); eo_manual_free_set(eo_obj, EINA_TRUE);
parent = eo_parent_get(eo_obj); parent = eo_parent_get(eo_obj);
evas = evas_object_evas_get(parent);
if (!obj || !_init_cow() || !eo_isa(parent, EVAS_COMMON_INTERFACE_INTERFACE)) if (!obj || !_init_cow() || !evas)
{ {
ERR("Failed"); ERR("Failed to create a canvas object (evas: %p)", evas);
return NULL; return NULL;
} }
@ -173,7 +175,7 @@ _efl_canvas_object_eo_base_constructor(Eo *eo_obj, Evas_Object_Protected_Data *o
obj->data_3d = eina_cow_alloc(evas_object_3d_cow); obj->data_3d = eina_cow_alloc(evas_object_3d_cow);
obj->mask = eina_cow_alloc(evas_object_mask_cow); obj->mask = eina_cow_alloc(evas_object_mask_cow);
evas_object_inject(eo_obj, obj, evas_object_evas_get(parent)); evas_object_inject(eo_obj, obj, evas);
eo_event_callback_array_add(eo_obj, event_catcher_watch(), obj); eo_event_callback_array_add(eo_obj, event_catcher_watch(), obj);
@ -1912,11 +1914,15 @@ _efl_canvas_object_eo_base_dbg_info_get(Eo *eo_obj, Evas_Object_Protected_Data *
} }
} }
EOLIAN static Evas * EOLIAN static Eo *
_efl_canvas_object_evas_common_interface_evas_get(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj) _efl_canvas_object_eo_base_provider_find(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, const Eo_Class *klass)
{ {
if ((obj->delete_me) || (!obj->layer)) return NULL; if (klass == EVAS_CANVAS_CLASS)
return obj->layer->evas->evas; {
if ((obj->delete_me) || (!obj->layer)) return NULL;
return obj->layer->evas->evas;
}
return eo_provider_find(eo_super(eo_obj, MY_CLASS), klass);
} }
EOLIAN Evas_Object* EOLIAN Evas_Object*
@ -2166,6 +2172,7 @@ _efl_canvas_object_legacy_ctor(Eo *eo_obj, Evas_Object_Protected_Data *obj)
obj->legacy = EINA_TRUE; obj->legacy = EINA_TRUE;
} }
/* legacy */ /* legacy */
EAPI const char * EAPI const char *
@ -2275,4 +2282,10 @@ evas_object_size_hint_align_get(const Evas_Object *obj, double *x, double *y)
efl_gfx_size_hint_align_get(obj, x, y); efl_gfx_size_hint_align_get(obj, x, y);
} }
EAPI Evas *
evas_object_evas_get(const Eo *eo_obj)
{
return eo_provider_find((Eo *) eo_obj, EVAS_CANVAS_CLASS);
}
#include "canvas/efl_canvas_object.eo.c" #include "canvas/efl_canvas_object.eo.c"

View File

@ -366,7 +366,7 @@ START_TEST(edje_test_swallows)
ck_assert_ptr_eq(eo_parent_get(o1), ly); ck_assert_ptr_eq(eo_parent_get(o1), ly);
edje_object_part_unswallow(ly, o1); edje_object_part_unswallow(ly, o1);
ck_assert_ptr_eq(eo_parent_get(o1), evas_common_evas_get(o1)); ck_assert_ptr_eq(eo_parent_get(o1), evas_object_evas_get(o1));
fail_if(!edje_object_part_swallow(ly, "swallow", o1)); fail_if(!edje_object_part_swallow(ly, "swallow", o1));
ck_assert_ptr_eq(eo_parent_get(o1), ly); ck_assert_ptr_eq(eo_parent_get(o1), ly);
@ -375,7 +375,7 @@ START_TEST(edje_test_swallows)
fail_if(!edje_object_part_swallow(ly, "swallow", o2)); fail_if(!edje_object_part_swallow(ly, "swallow", o2));
ck_assert_ptr_eq(eo_parent_get(o2), ly); ck_assert_ptr_eq(eo_parent_get(o2), ly);
/* o1 is deleted at this point. */ /* o1 is deleted at this point. */
ck_assert_ptr_eq(eo_parent_get(o1), evas_common_evas_get(o1)); ck_assert_ptr_eq(eo_parent_get(o1), evas_object_evas_get(o1));
EDJE_TEST_FREE_EVAS(); EDJE_TEST_FREE_EVAS();
} }
@ -397,7 +397,7 @@ START_TEST(edje_test_swallows_eoapi)
ck_assert_ptr_eq(eo_parent_get(o1), ly); ck_assert_ptr_eq(eo_parent_get(o1), ly);
efl_content_remove(ly, o1); efl_content_remove(ly, o1);
ck_assert_ptr_eq(eo_parent_get(o1), evas_common_evas_get(o1)); ck_assert_ptr_eq(eo_parent_get(o1), evas_object_evas_get(o1));
fail_if(!efl_content_set(efl_part(ly, "swallow"), o1)); fail_if(!efl_content_set(efl_part(ly, "swallow"), o1));
ck_assert_ptr_eq(eo_parent_get(o1), ly); ck_assert_ptr_eq(eo_parent_get(o1), ly);
@ -406,7 +406,7 @@ START_TEST(edje_test_swallows_eoapi)
fail_if(!efl_content_set(efl_part(ly, "swallow"), o2)); fail_if(!efl_content_set(efl_part(ly, "swallow"), o2));
ck_assert_ptr_eq(eo_parent_get(o2), ly); ck_assert_ptr_eq(eo_parent_get(o2), ly);
/* o1 is deleted at this point. */ /* o1 is deleted at this point. */
ck_assert_ptr_eq(eo_parent_get(o1), evas_common_evas_get(o1)); ck_assert_ptr_eq(eo_parent_get(o1), evas_object_evas_get(o1));
EDJE_TEST_FREE_EVAS(); EDJE_TEST_FREE_EVAS();
} }

View File

@ -42,7 +42,7 @@ START_TEST(elm_layout_swallows)
ck_assert_ptr_eq(eo_parent_get(bt), ly); ck_assert_ptr_eq(eo_parent_get(bt), ly);
bt = efl_content_unset(efl_part(ly, "element1")); bt = efl_content_unset(efl_part(ly, "element1"));
ck_assert_ptr_eq(eo_parent_get(bt), evas_common_evas_get(bt)); ck_assert_ptr_eq(eo_parent_get(bt), evas_object_evas_get(bt));
fail_if(!efl_content_set(efl_part(ly, "element1"), bt)); fail_if(!efl_content_set(efl_part(ly, "element1"), bt));
ck_assert_ptr_eq(eo_parent_get(bt), ly); ck_assert_ptr_eq(eo_parent_get(bt), ly);
@ -51,7 +51,7 @@ START_TEST(elm_layout_swallows)
fail_if(!efl_content_set(efl_part(ly, "element1"), bt2)); fail_if(!efl_content_set(efl_part(ly, "element1"), bt2));
ck_assert_ptr_eq(eo_parent_get(bt2), ly); ck_assert_ptr_eq(eo_parent_get(bt2), ly);
/* bt is deleted at this point. */ /* bt is deleted at this point. */
ck_assert_ptr_eq(eo_parent_get(bt), evas_common_evas_get(bt)); ck_assert_ptr_eq(eo_parent_get(bt), evas_object_evas_get(bt));
elm_shutdown(); elm_shutdown();
} }