summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/examples/eolian_cxx/colourable.c4
-rw-r--r--src/examples/eolian_cxx/colourable_cxx.cc4
-rw-r--r--src/examples/eolian_cxx/colourable_stub.h2
-rw-r--r--src/lib/ecore_audio/ecore_audio_obj.c5
-rw-r--r--src/lib/ecore_audio/ecore_audio_obj_in.c6
-rw-r--r--src/lib/ecore_audio/ecore_audio_obj_in_tone.c6
-rw-r--r--src/lib/ecore_audio/ecore_audio_obj_out.c6
-rw-r--r--src/lib/ecore_audio/ecore_audio_obj_out_pulse.c6
-rw-r--r--src/lib/ecore_audio/ecore_audio_obj_out_sndfile.c5
-rw-r--r--src/lib/ecore_con/ecore_con.c6
-rw-r--r--src/lib/ecore_con/ecore_con_url.c9
-rw-r--r--src/lib/ector/cairo/ector_cairo_surface.c6
-rw-r--r--src/lib/ector/cairo/ector_renderer_cairo_base.c8
-rw-r--r--src/lib/ector/cairo/ector_renderer_cairo_shape.c6
-rw-r--r--src/lib/ector/software/ector_renderer_software_gradient_linear.c6
-rw-r--r--src/lib/ector/software/ector_renderer_software_gradient_radial.c6
-rw-r--r--src/lib/ector/software/ector_renderer_software_shape.c6
-rw-r--r--src/lib/ector/software/ector_software_surface.c6
-rw-r--r--src/lib/edje/edje_edit.c4
-rw-r--r--src/lib/edje/edje_smart.c6
-rw-r--r--src/lib/eio/eio_model.c8
-rw-r--r--src/lib/emotion/emotion_smart.c6
-rw-r--r--src/lib/eo/Eo.h4
-rw-r--r--src/lib/eo/eo.c12
-rw-r--r--src/lib/eo/eo_base.eo1
-rw-r--r--src/lib/eo/eo_base_class.c4
-rw-r--r--src/lib/evas/canvas/evas_3d_camera.c6
-rw-r--r--src/lib/evas/canvas/evas_3d_light.c6
-rw-r--r--src/lib/evas/canvas/evas_3d_material.c6
-rw-r--r--src/lib/evas/canvas/evas_3d_mesh.c6
-rw-r--r--src/lib/evas/canvas/evas_3d_object.c6
-rw-r--r--src/lib/evas/canvas/evas_3d_scene.c6
-rw-r--r--src/lib/evas/canvas/evas_3d_texture.c6
-rw-r--r--src/lib/evas/canvas/evas_main.c6
-rw-r--r--src/lib/evas/canvas/evas_object_box.c6
-rw-r--r--src/lib/evas/canvas/evas_object_grid.c5
-rw-r--r--src/lib/evas/canvas/evas_object_image.c8
-rw-r--r--src/lib/evas/canvas/evas_object_line.c6
-rw-r--r--src/lib/evas/canvas/evas_object_main.c8
-rw-r--r--src/lib/evas/canvas/evas_object_polygon.c6
-rw-r--r--src/lib/evas/canvas/evas_object_rectangle.c6
-rw-r--r--src/lib/evas/canvas/evas_object_smart.c6
-rw-r--r--src/lib/evas/canvas/evas_object_smart_clipped.c6
-rw-r--r--src/lib/evas/canvas/evas_object_table.c6
-rw-r--r--src/lib/evas/canvas/evas_object_text.c6
-rw-r--r--src/lib/evas/canvas/evas_object_textblock.c6
-rw-r--r--src/lib/evas/canvas/evas_object_textgrid.c6
-rw-r--r--src/lib/evas/canvas/evas_object_vg.c6
-rw-r--r--src/lib/evas/canvas/evas_out.c8
-rw-r--r--src/lib/evas/canvas/evas_vg_container.c6
-rw-r--r--src/lib/evas/canvas/evas_vg_gradient_linear.c6
-rw-r--r--src/lib/evas/canvas/evas_vg_gradient_radial.c6
-rw-r--r--src/lib/evas/canvas/evas_vg_node.c6
-rw-r--r--src/lib/evas/canvas/evas_vg_root_node.c6
-rw-r--r--src/lib/evas/canvas/evas_vg_shape.c6
-rw-r--r--src/tests/eo/composite_objects/composite_objects_comp.c6
-rw-r--r--src/tests/eo/constructors/constructors_mixin.c6
-rw-r--r--src/tests/eo/constructors/constructors_simple.c6
-rw-r--r--src/tests/eo/constructors/constructors_simple2.c5
-rw-r--r--src/tests/eo/constructors/constructors_simple3.c4
-rw-r--r--src/tests/eo/constructors/constructors_simple7.c4
-rw-r--r--src/tests/eo/mixin/mixin_mixin.c4
-rw-r--r--src/tests/eo/mixin/mixin_mixin2.c5
-rw-r--r--src/tests/eo/mixin/mixin_mixin3.c4
-rw-r--r--src/tests/eo/signals/signals_simple.c6
-rw-r--r--src/tests/eo/suite/eo_test_general.c4
-rw-r--r--src/tests/eo/suite/eo_test_threaded_calls.c6
-rw-r--r--src/tests/eolian_cxx/a.c4
-rw-r--r--src/tests/eolian_cxx/b.c4
-rw-r--r--src/tests/eolian_cxx/c.c4
-rw-r--r--src/tests/eolian_cxx/callback.c6
-rw-r--r--src/tests/eolian_cxx/d.c4
-rw-r--r--src/tests/eolian_cxx/simple.c4
73 files changed, 262 insertions, 151 deletions
diff --git a/src/examples/eolian_cxx/colourable.c b/src/examples/eolian_cxx/colourable.c
index 1c7ff5e..655d63c 100644
--- a/src/examples/eolian_cxx/colourable.c
+++ b/src/examples/eolian_cxx/colourable.c
@@ -26,7 +26,7 @@ struct _Colourable_Data
26 26
27typedef struct _Colourable_Data Colourable_Data; 27typedef struct _Colourable_Data Colourable_Data;
28 28
29void 29Eo *
30_colourable_eo_base_constructor(Eo *obj, Colourable_Data *self EINA_UNUSED) 30_colourable_eo_base_constructor(Eo *obj, Colourable_Data *self EINA_UNUSED)
31{ 31{
32 if(!_colourable_impl_logdomain) 32 if(!_colourable_impl_logdomain)
@@ -35,7 +35,7 @@ _colourable_eo_base_constructor(Eo *obj, Colourable_Data *self EINA_UNUSED)
35 = eina_log_domain_register("colourable", EINA_COLOR_BLUE); 35 = eina_log_domain_register("colourable", EINA_COLOR_BLUE);
36 } 36 }
37 DBG("_colourable_constructor(%p, %p)\n", obj, MY_CLASS); 37 DBG("_colourable_constructor(%p, %p)\n", obj, MY_CLASS);
38 eo_do_super(obj, MY_CLASS, eo_constructor()); 38 return eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
39} 39}
40 40
41void 41void
diff --git a/src/examples/eolian_cxx/colourable_cxx.cc b/src/examples/eolian_cxx/colourable_cxx.cc
index bd4fa46..934a5d0 100644
--- a/src/examples/eolian_cxx/colourable_cxx.cc
+++ b/src/examples/eolian_cxx/colourable_cxx.cc
@@ -19,12 +19,12 @@ extern "C"
19 19
20static efl::eina::log_domain domain("colourable"); 20static efl::eina::log_domain domain("colourable");
21 21
22void 22Eo *
23_colourable_eo_base_constructor(Eo *obj, Colourable_Data *self) 23_colourable_eo_base_constructor(Eo *obj, Colourable_Data *self)
24{ 24{
25 EINA_CXX_DOM_LOG_DBG(domain) << __func__ << std::endl; 25 EINA_CXX_DOM_LOG_DBG(domain) << __func__ << std::endl;
26 self->r = self->g = self->b = 0; 26 self->r = self->g = self->b = 0;
27 eo_do_super(obj, MY_CLASS, eo_constructor()); 27 return eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
28} 28}
29 29
30void 30void
diff --git a/src/examples/eolian_cxx/colourable_stub.h b/src/examples/eolian_cxx/colourable_stub.h
index f6d758c..26b44b1 100644
--- a/src/examples/eolian_cxx/colourable_stub.h
+++ b/src/examples/eolian_cxx/colourable_stub.h
@@ -13,7 +13,7 @@ struct _Colourable_Data
13}; 13};
14typedef struct _Colourable_Data Colourable_Data; 14typedef struct _Colourable_Data Colourable_Data;
15 15
16void _colourable_eo_base_constructor(Eo *obj, Colourable_Data *self); 16Eo *_colourable_eo_base_constructor(Eo *obj, Colourable_Data *self);
17void _colourable_eo_base_destructor(Eo *obj, Colourable_Data *self); 17void _colourable_eo_base_destructor(Eo *obj, Colourable_Data *self);
18void _colourable_rgb_24bits_constructor(Eo *obj, Colourable_Data *self, int rgb); 18void _colourable_rgb_24bits_constructor(Eo *obj, Colourable_Data *self, int rgb);
19void _colourable_print_colour(Eo *obj, Colourable_Data *self); 19void _colourable_print_colour(Eo *obj, Colourable_Data *self);
diff --git a/src/lib/ecore_audio/ecore_audio_obj.c b/src/lib/ecore_audio/ecore_audio_obj.c
index 43fc821..3607cd9 100644
--- a/src/lib/ecore_audio/ecore_audio_obj.c
+++ b/src/lib/ecore_audio/ecore_audio_obj.c
@@ -54,12 +54,11 @@ _ecore_audio_volume_get(Eo *eo_obj EINA_UNUSED, Ecore_Audio_Object *obj)
54 return obj->volume; 54 return obj->volume;
55} 55}
56 56
57EOLIAN static void 57EOLIAN static Eo *
58_ecore_audio_eo_base_constructor(Eo *eo_obj, Ecore_Audio_Object *obj) 58_ecore_audio_eo_base_constructor(Eo *eo_obj, Ecore_Audio_Object *obj)
59{ 59{
60 eo_do_super(eo_obj, MY_CLASS, eo_constructor());
61
62 obj->volume = 1.0; 60 obj->volume = 1.0;
61 return eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
63} 62}
64 63
65#include "ecore_audio.eo.c" 64#include "ecore_audio.eo.c"
diff --git a/src/lib/ecore_audio/ecore_audio_obj_in.c b/src/lib/ecore_audio/ecore_audio_obj_in.c
index ece9440..a6afa18 100644
--- a/src/lib/ecore_audio/ecore_audio_obj_in.c
+++ b/src/lib/ecore_audio/ecore_audio_obj_in.c
@@ -170,12 +170,14 @@ _ecore_audio_in_ecore_audio_vio_set(Eo *eo_obj, Ecore_Audio_Input *obj, Ecore_Au
170 obj->seekable = (vio->seek != NULL); 170 obj->seekable = (vio->seek != NULL);
171} 171}
172 172
173EOLIAN static void 173EOLIAN static Eo *
174_ecore_audio_in_eo_base_constructor(Eo *eo_obj, Ecore_Audio_Input *obj) 174_ecore_audio_in_eo_base_constructor(Eo *eo_obj, Ecore_Audio_Input *obj)
175{ 175{
176 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 176 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
177 177
178 obj->speed = 1.0; 178 obj->speed = 1.0;
179
180 return eo_obj;
179} 181}
180 182
181EOLIAN static void 183EOLIAN static void
diff --git a/src/lib/ecore_audio/ecore_audio_obj_in_tone.c b/src/lib/ecore_audio/ecore_audio_obj_in_tone.c
index bdecc21..ac83b85 100644
--- a/src/lib/ecore_audio/ecore_audio_obj_in_tone.c
+++ b/src/lib/ecore_audio/ecore_audio_obj_in_tone.c
@@ -107,12 +107,12 @@ _ecore_audio_in_tone_eo_base_key_data_get(Eo *eo_obj, Ecore_Audio_In_Tone_Data *
107 } 107 }
108} 108}
109 109
110EOLIAN static void 110EOLIAN static Eo *
111_ecore_audio_in_tone_eo_base_constructor(Eo *eo_obj, Ecore_Audio_In_Tone_Data *obj) 111_ecore_audio_in_tone_eo_base_constructor(Eo *eo_obj, Ecore_Audio_In_Tone_Data *obj)
112{ 112{
113 Ecore_Audio_Input *in_obj = eo_data_scope_get(eo_obj, ECORE_AUDIO_IN_CLASS); 113 Ecore_Audio_Input *in_obj = eo_data_scope_get(eo_obj, ECORE_AUDIO_IN_CLASS);
114 114
115 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 115 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
116 116
117 in_obj->channels = 1; 117 in_obj->channels = 1;
118 in_obj->samplerate = 44100; 118 in_obj->samplerate = 44100;
@@ -120,6 +120,8 @@ _ecore_audio_in_tone_eo_base_constructor(Eo *eo_obj, Ecore_Audio_In_Tone_Data *o
120 in_obj->seekable = EINA_TRUE; 120 in_obj->seekable = EINA_TRUE;
121 121
122 obj->freq = 1000; 122 obj->freq = 1000;
123
124 return eo_obj;
123} 125}
124 126
125#include "ecore_audio_in_tone.eo.c" 127#include "ecore_audio_in_tone.eo.c"
diff --git a/src/lib/ecore_audio/ecore_audio_obj_out.c b/src/lib/ecore_audio/ecore_audio_obj_out.c
index 2d8522b..0414d66 100644
--- a/src/lib/ecore_audio/ecore_audio_obj_out.c
+++ b/src/lib/ecore_audio/ecore_audio_obj_out.c
@@ -129,12 +129,14 @@ _ecore_audio_out_ecore_audio_vio_set(Eo *eo_obj, Ecore_Audio_Output *_pd EINA_UN
129 ea_obj->vio->free_func = free_func; 129 ea_obj->vio->free_func = free_func;
130} 130}
131 131
132EOLIAN static void 132EOLIAN static Eo *
133_ecore_audio_out_eo_base_constructor(Eo *eo_obj, Ecore_Audio_Output *obj) 133_ecore_audio_out_eo_base_constructor(Eo *eo_obj, Ecore_Audio_Output *obj)
134{ 134{
135 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 135 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
136 136
137 obj->need_writer = EINA_TRUE; 137 obj->need_writer = EINA_TRUE;
138
139 return eo_obj;
138} 140}
139 141
140EOLIAN static void 142EOLIAN static void
diff --git a/src/lib/ecore_audio/ecore_audio_obj_out_pulse.c b/src/lib/ecore_audio/ecore_audio_obj_out_pulse.c
index a7308ab..fffe4c4 100644
--- a/src/lib/ecore_audio/ecore_audio_obj_out_pulse.c
+++ b/src/lib/ecore_audio/ecore_audio_obj_out_pulse.c
@@ -255,14 +255,14 @@ static void _state_job(void *data EINA_UNUSED)
255 class_vars.state_job = NULL; 255 class_vars.state_job = NULL;
256} 256}
257 257
258EOLIAN static void 258EOLIAN static Eo *
259_ecore_audio_out_pulse_eo_base_constructor(Eo *eo_obj, Ecore_Audio_Out_Pulse_Data *_pd EINA_UNUSED) 259_ecore_audio_out_pulse_eo_base_constructor(Eo *eo_obj, Ecore_Audio_Out_Pulse_Data *_pd EINA_UNUSED)
260{ 260{
261 int argc; 261 int argc;
262 char **argv; 262 char **argv;
263 Ecore_Audio_Output *out_obj = eo_data_scope_get(eo_obj, ECORE_AUDIO_OUT_CLASS); 263 Ecore_Audio_Output *out_obj = eo_data_scope_get(eo_obj, ECORE_AUDIO_OUT_CLASS);
264 264
265 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 265 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
266 266
267 out_obj->need_writer = EINA_FALSE; 267 out_obj->need_writer = EINA_FALSE;
268 268
@@ -281,6 +281,8 @@ _ecore_audio_out_pulse_eo_base_constructor(Eo *eo_obj, Ecore_Audio_Out_Pulse_Dat
281 class_vars.outputs = eina_list_append(class_vars.outputs, eo_obj); 281 class_vars.outputs = eina_list_append(class_vars.outputs, eo_obj);
282 if (class_vars.state_job) eo_del(class_vars.state_job); 282 if (class_vars.state_job) eo_del(class_vars.state_job);
283 class_vars.state_job = ecore_job_add(_state_job, NULL); 283 class_vars.state_job = ecore_job_add(_state_job, NULL);
284
285 return eo_obj;
284} 286}
285 287
286EOLIAN static void 288EOLIAN static void
diff --git a/src/lib/ecore_audio/ecore_audio_obj_out_sndfile.c b/src/lib/ecore_audio/ecore_audio_obj_out_sndfile.c
index fc552b8..d986b67 100644
--- a/src/lib/ecore_audio/ecore_audio_obj_out_sndfile.c
+++ b/src/lib/ecore_audio/ecore_audio_obj_out_sndfile.c
@@ -158,17 +158,18 @@ _ecore_audio_out_sndfile_ecore_audio_format_get(Eo *eo_obj, Ecore_Audio_Out_Sndf
158 return obj->format; 158 return obj->format;
159} 159}
160 160
161EOLIAN static void 161EOLIAN static Eo *
162_ecore_audio_out_sndfile_eo_base_constructor(Eo *eo_obj, Ecore_Audio_Out_Sndfile_Data *_pd EINA_UNUSED) 162_ecore_audio_out_sndfile_eo_base_constructor(Eo *eo_obj, Ecore_Audio_Out_Sndfile_Data *_pd EINA_UNUSED)
163{ 163{
164 Ecore_Audio_Output *out_obj = eo_data_scope_get(eo_obj, ECORE_AUDIO_OUT_CLASS); 164 Ecore_Audio_Output *out_obj = eo_data_scope_get(eo_obj, ECORE_AUDIO_OUT_CLASS);
165 165
166 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 166 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
167 167
168 eo_do(eo_obj, ecore_audio_obj_format_set(ECORE_AUDIO_FORMAT_OGG)); 168 eo_do(eo_obj, ecore_audio_obj_format_set(ECORE_AUDIO_FORMAT_OGG));
169 169
170 // FIXME: Use writer from output 170 // FIXME: Use writer from output
171 out_obj->need_writer = EINA_FALSE; 171 out_obj->need_writer = EINA_FALSE;
172 return eo_obj;
172} 173}
173 174
174EOLIAN static void 175EOLIAN static void
diff --git a/src/lib/ecore_con/ecore_con.c b/src/lib/ecore_con/ecore_con.c
index dee26e1..bc121d3 100644
--- a/src/lib/ecore_con/ecore_con.c
+++ b/src/lib/ecore_con/ecore_con.c
@@ -372,15 +372,17 @@ ecore_con_server_add(Ecore_Con_Type compl_type,
372 return obj; 372 return obj;
373} 373}
374 374
375EOLIAN static void 375EOLIAN static Eo *
376_ecore_con_server_eo_base_constructor(Ecore_Con_Server *obj, Ecore_Con_Server_Data *svr) 376_ecore_con_server_eo_base_constructor(Ecore_Con_Server *obj, Ecore_Con_Server_Data *svr)
377{ 377{
378 eo_do_super(obj, ECORE_CON_SERVER_CLASS, eo_constructor()); 378 obj = eo_do_super_ret(obj, ECORE_CON_SERVER_CLASS, obj, eo_constructor());
379 379
380 svr->fd = -1; 380 svr->fd = -1;
381 svr->reject_excess_clients = EINA_FALSE; 381 svr->reject_excess_clients = EINA_FALSE;
382 svr->client_limit = -1; 382 svr->client_limit = -1;
383 svr->clients = NULL; 383 svr->clients = NULL;
384
385 return obj;
384} 386}
385 387
386EOLIAN static Eo * 388EOLIAN static Eo *
diff --git a/src/lib/ecore_con/ecore_con_url.c b/src/lib/ecore_con/ecore_con_url.c
index 37902ed..37f5fa0 100644
--- a/src/lib/ecore_con/ecore_con_url.c
+++ b/src/lib/ecore_con/ecore_con_url.c
@@ -453,25 +453,26 @@ ecore_con_url_new(const char *url)
453 return url_obj; 453 return url_obj;
454} 454}
455 455
456EOLIAN static void 456EOLIAN static Eo *
457_efl_network_url_eo_base_constructor(Efl_Network_Url *url_obj, Efl_Network_Url_Data *url_con EINA_UNUSED) 457_efl_network_url_eo_base_constructor(Efl_Network_Url *url_obj, Efl_Network_Url_Data *url_con EINA_UNUSED)
458{ 458{
459 eo_do_super(url_obj, MY_CLASS, eo_constructor()); 459 url_obj = eo_do_super_ret(url_obj, MY_CLASS, url_obj, eo_constructor());
460 460
461 if (!_init_count) eo_error_set(url_obj); 461 if (!_init_count) eo_error_set(url_obj);
462 if (!_c_init()) 462 if (!_c_init())
463 { 463 {
464 eo_error_set(url_obj); 464 eo_error_set(url_obj);
465 return; 465 return NULL;
466 } 466 }
467 467
468 url_con->curl_easy = _c->curl_easy_init(); 468 url_con->curl_easy = _c->curl_easy_init();
469 if (!url_con->curl_easy) 469 if (!url_con->curl_easy)
470 { 470 {
471 eo_error_set(url_obj); 471 eo_error_set(url_obj);
472 return; 472 return NULL;
473 } 473 }
474 474
475 return url_obj;
475} 476}
476 477
477EOLIAN static Eo * 478EOLIAN static Eo *
diff --git a/src/lib/ector/cairo/ector_cairo_surface.c b/src/lib/ector/cairo/ector_cairo_surface.c
index 377fbbd..10fef65 100644
--- a/src/lib/ector/cairo/ector_cairo_surface.c
+++ b/src/lib/ector/cairo/ector_cairo_surface.c
@@ -121,14 +121,16 @@ _ector_cairo_surface_ector_generic_surface_reference_point_set(Eo *obj EINA_UNUS
121 pd->current.y = y; 121 pd->current.y = y;
122} 122}
123 123
124static void 124static Eo *
125_ector_cairo_surface_eo_base_constructor(Eo *obj, 125_ector_cairo_surface_eo_base_constructor(Eo *obj,
126 Ector_Cairo_Surface_Data *pd) 126 Ector_Cairo_Surface_Data *pd)
127{ 127{
128 eo_do_super(obj, ECTOR_CAIRO_SURFACE_CLASS, eo_constructor()); 128 obj = eo_do_super_ret(obj, ECTOR_CAIRO_SURFACE_CLASS, obj, eo_constructor());
129 _cairo_count++; 129 _cairo_count++;
130 130
131 _ector_cairo_surface_context_set(obj, pd, NULL); 131 _ector_cairo_surface_context_set(obj, pd, NULL);
132
133 return obj;
132} 134}
133 135
134static void 136static void
diff --git a/src/lib/ector/cairo/ector_renderer_cairo_base.c b/src/lib/ector/cairo/ector_renderer_cairo_base.c
index 1580b4e..5bf0f88 100644
--- a/src/lib/ector/cairo/ector_renderer_cairo_base.c
+++ b/src/lib/ector/cairo/ector_renderer_cairo_base.c
@@ -190,16 +190,18 @@ _ector_renderer_cairo_base_ector_renderer_generic_base_draw(Eo *obj,
190 return EINA_TRUE; 190 return EINA_TRUE;
191} 191}
192 192
193static void 193static Eo *
194_ector_renderer_cairo_base_eo_base_constructor(Eo *obj, Ector_Renderer_Cairo_Base_Data *pd EINA_UNUSED) 194_ector_renderer_cairo_base_eo_base_constructor(Eo *obj, Ector_Renderer_Cairo_Base_Data *pd EINA_UNUSED)
195{ 195{
196 eo_do_super(obj, ECTOR_RENDERER_CAIRO_BASE_CLASS, eo_constructor()); 196 obj = eo_do_super_ret(obj, ECTOR_RENDERER_CAIRO_BASE_CLASS, obj, eo_constructor());
197 197
198 pd->generic = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_BASE_CLASS, obj); 198 pd->generic = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_BASE_CLASS, obj);
199 199
200 USE(obj, cairo_matrix_init_identity, ); 200 USE(obj, cairo_matrix_init_identity, NULL);
201 201
202 cairo_matrix_init_identity(&identity); 202 cairo_matrix_init_identity(&identity);
203
204 return obj;
203} 205}
204 206
205static void 207static void
diff --git a/src/lib/ector/cairo/ector_renderer_cairo_shape.c b/src/lib/ector/cairo/ector_renderer_cairo_shape.c
index 2b79e8b..b3923e9 100644
--- a/src/lib/ector/cairo/ector_renderer_cairo_shape.c
+++ b/src/lib/ector/cairo/ector_renderer_cairo_shape.c
@@ -244,15 +244,17 @@ _ector_renderer_cairo_shape_ector_renderer_generic_base_bounds_get(Eo *obj,
244 r->y += bd->generic->origin.y; 244 r->y += bd->generic->origin.y;
245} 245}
246 246
247void 247Eo *
248_ector_renderer_cairo_shape_eo_base_constructor(Eo *obj, Ector_Renderer_Cairo_Shape_Data *pd) 248_ector_renderer_cairo_shape_eo_base_constructor(Eo *obj, Ector_Renderer_Cairo_Shape_Data *pd)
249{ 249{
250 eo_do_super(obj, ECTOR_RENDERER_CAIRO_SHAPE_CLASS, eo_constructor()); 250 obj = eo_do_super_ret(obj, ECTOR_RENDERER_CAIRO_SHAPE_CLASS, obj, eo_constructor());
251 pd->shape = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_SHAPE_MIXIN, obj); 251 pd->shape = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_SHAPE_MIXIN, obj);
252 pd->base = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_BASE_CLASS, obj); 252 pd->base = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_BASE_CLASS, obj);
253 253
254 eo_do(obj, 254 eo_do(obj,
255 eo_event_callback_add(EFL_GFX_PATH_CHANGED, _ector_renderer_cairo_shape_path_changed, pd)); 255 eo_event_callback_add(EFL_GFX_PATH_CHANGED, _ector_renderer_cairo_shape_path_changed, pd));
256
257 return obj;
256} 258}
257 259
258void 260void
diff --git a/src/lib/ector/software/ector_renderer_software_gradient_linear.c b/src/lib/ector/software/ector_renderer_software_gradient_linear.c
index a6e32b0..f2ca832 100644
--- a/src/lib/ector/software/ector_renderer_software_gradient_linear.c
+++ b/src/lib/ector/software/ector_renderer_software_gradient_linear.c
@@ -71,13 +71,15 @@ _ector_renderer_software_gradient_linear_ector_renderer_software_base_fill(Eo *o
71 return EINA_TRUE; 71 return EINA_TRUE;
72} 72}
73 73
74void 74Eo *
75_ector_renderer_software_gradient_linear_eo_base_constructor(Eo *obj, 75_ector_renderer_software_gradient_linear_eo_base_constructor(Eo *obj,
76 Ector_Renderer_Software_Gradient_Data *pd) 76 Ector_Renderer_Software_Gradient_Data *pd)
77{ 77{
78 eo_do_super(obj, ECTOR_RENDERER_SOFTWARE_GRADIENT_LINEAR_CLASS, eo_constructor()); 78 obj = eo_do_super_ret(obj, ECTOR_RENDERER_SOFTWARE_GRADIENT_LINEAR_CLASS, obj, eo_constructor());
79 pd->gd = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_GRADIENT_MIXIN, obj); 79 pd->gd = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_GRADIENT_MIXIN, obj);
80 pd->gld = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_GRADIENT_LINEAR_MIXIN, obj); 80 pd->gld = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_GRADIENT_LINEAR_MIXIN, obj);
81
82 return obj;
81} 83}
82 84
83void 85void
diff --git a/src/lib/ector/software/ector_renderer_software_gradient_radial.c b/src/lib/ector/software/ector_renderer_software_gradient_radial.c
index a05b487..5b63f95 100644
--- a/src/lib/ector/software/ector_renderer_software_gradient_radial.c
+++ b/src/lib/ector/software/ector_renderer_software_gradient_radial.c
@@ -79,13 +79,15 @@ _ector_renderer_software_gradient_radial_ector_renderer_software_base_fill(Eo *o
79 return EINA_TRUE; 79 return EINA_TRUE;
80} 80}
81 81
82void 82Eo *
83_ector_renderer_software_gradient_radial_eo_base_constructor(Eo *obj, 83_ector_renderer_software_gradient_radial_eo_base_constructor(Eo *obj,
84 Ector_Renderer_Software_Gradient_Data *pd) 84 Ector_Renderer_Software_Gradient_Data *pd)
85{ 85{
86 eo_do_super(obj, ECTOR_RENDERER_SOFTWARE_GRADIENT_RADIAL_CLASS, eo_constructor()); 86 obj = eo_do_super_ret(obj, ECTOR_RENDERER_SOFTWARE_GRADIENT_RADIAL_CLASS, obj, eo_constructor());
87 pd->gd = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_GRADIENT_MIXIN, obj); 87 pd->gd = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_GRADIENT_MIXIN, obj);
88 pd->gld = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_GRADIENT_RADIAL_MIXIN, obj); 88 pd->gld = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_GRADIENT_RADIAL_MIXIN, obj);
89
90 return obj;
89} 91}
90 92
91void 93void
diff --git a/src/lib/ector/software/ector_renderer_software_shape.c b/src/lib/ector/software/ector_renderer_software_shape.c
index 2e4fbea..a91b80e 100644
--- a/src/lib/ector/software/ector_renderer_software_shape.c
+++ b/src/lib/ector/software/ector_renderer_software_shape.c
@@ -362,14 +362,16 @@ _ector_renderer_software_shape_path_changed(void *data, Eo *obj EINA_UNUSED, con
362 return EINA_TRUE; 362 return EINA_TRUE;
363} 363}
364 364
365void 365Eo *
366_ector_renderer_software_shape_eo_base_constructor(Eo *obj, Ector_Renderer_Software_Shape_Data *pd) 366_ector_renderer_software_shape_eo_base_constructor(Eo *obj, Ector_Renderer_Software_Shape_Data *pd)
367{ 367{
368 eo_do_super(obj, ECTOR_RENDERER_SOFTWARE_SHAPE_CLASS, eo_constructor()); 368 obj = eo_do_super_ret(obj, ECTOR_RENDERER_SOFTWARE_SHAPE_CLASS, obj, eo_constructor());
369 pd->shape = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_SHAPE_MIXIN, obj); 369 pd->shape = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_SHAPE_MIXIN, obj);
370 pd->base = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_BASE_CLASS, obj); 370 pd->base = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_BASE_CLASS, obj);
371 eo_do(obj, 371 eo_do(obj,
372 eo_event_callback_add(EFL_GFX_PATH_CHANGED, _ector_renderer_software_shape_path_changed, pd)); 372 eo_event_callback_add(EFL_GFX_PATH_CHANGED, _ector_renderer_software_shape_path_changed, pd));
373
374 return obj;
373} 375}
374 376
375void 377void
diff --git a/src/lib/ector/software/ector_software_surface.c b/src/lib/ector/software/ector_software_surface.c
index 02d93c3..a558302 100644
--- a/src/lib/ector/software/ector_software_surface.c
+++ b/src/lib/ector/software/ector_software_surface.c
@@ -65,17 +65,19 @@ _ector_software_surface_surface_get(Eo *obj EINA_UNUSED,
65 *height = pd->software->fill_data.raster_buffer.height; 65 *height = pd->software->fill_data.raster_buffer.height;
66} 66}
67 67
68static void 68static Eo *
69_ector_software_surface_eo_base_constructor(Eo *obj, 69_ector_software_surface_eo_base_constructor(Eo *obj,
70 Ector_Software_Surface_Data *pd EINA_UNUSED) 70 Ector_Software_Surface_Data *pd EINA_UNUSED)
71{ 71{
72 eo_do_super(obj, ECTOR_SOFTWARE_SURFACE_CLASS, eo_constructor()); 72 obj = eo_do_super_ret(obj, ECTOR_SOFTWARE_SURFACE_CLASS, obj, eo_constructor());
73 if(_software_count == 0) 73 if(_software_count == 0)
74 { 74 {
75 pd->software = (Software_Rasterizer *) calloc(1, sizeof(Software_Rasterizer)); 75 pd->software = (Software_Rasterizer *) calloc(1, sizeof(Software_Rasterizer));
76 ector_software_rasterizer_init(pd->software); 76 ector_software_rasterizer_init(pd->software);
77 } 77 }
78 _software_count++; 78 _software_count++;
79
80 return obj;
79} 81}
80 82
81static void 83static void
diff --git a/src/lib/edje/edje_edit.c b/src/lib/edje/edje_edit.c
index 1086d64..891584e 100644
--- a/src/lib/edje/edje_edit.c
+++ b/src/lib/edje/edje_edit.c
@@ -239,12 +239,12 @@ edje_edit_object_add(Evas *evas)
239 return e; 239 return e;
240} 240}
241 241
242EOLIAN static void 242EOLIAN static Eo *
243_edje_edit_eo_base_constructor(Eo *obj, Edje_Edit *eed) 243_edje_edit_eo_base_constructor(Eo *obj, Edje_Edit *eed)
244{ 244{
245 eed->base = eo_data_ref(obj, EDJE_OBJECT_CLASS); 245 eed->base = eo_data_ref(obj, EDJE_OBJECT_CLASS);
246 246
247 eo_do_super(obj, MY_CLASS, eo_constructor()); 247 return eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
248} 248}
249 249
250EOLIAN static void 250EOLIAN static void
diff --git a/src/lib/edje/edje_smart.c b/src/lib/edje/edje_smart.c
index 7de630d..f75abd7 100644
--- a/src/lib/edje/edje_smart.c
+++ b/src/lib/edje/edje_smart.c
@@ -24,14 +24,16 @@ edje_object_add(Evas *evas)
24 return e; 24 return e;
25} 25}
26 26
27EOLIAN static void 27EOLIAN static Eo *
28_edje_object_eo_base_constructor(Eo *obj, Edje *ed) 28_edje_object_eo_base_constructor(Eo *obj, Edje *ed)
29{ 29{
30 ed->base = eo_data_ref(obj, EVAS_SMART_CLIPPED_CLASS); 30 ed->base = eo_data_ref(obj, EVAS_SMART_CLIPPED_CLASS);
31 31
32 eo_do_super(obj, MY_CLASS, eo_constructor()); 32 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
33 eo_do(obj, evas_obj_type_set(MY_CLASS_NAME_LEGACY)); 33 eo_do(obj, evas_obj_type_set(MY_CLASS_NAME_LEGACY));
34 _edje_lib_ref(); 34 _edje_lib_ref();
35
36 return obj;
35} 37}
36 38
37EOLIAN static void 39EOLIAN static void
diff --git a/src/lib/eio/eio_model.c b/src/lib/eio/eio_model.c
index 384a8e4..5ff288e 100644
--- a/src/lib/eio/eio_model.c
+++ b/src/lib/eio/eio_model.c
@@ -623,15 +623,15 @@ _eio_model_efl_model_base_children_slice_get(Eo *obj EINA_UNUSED, Eio_Model_Data
623/** 623/**
624 * Class definitions 624 * Class definitions
625 */ 625 */
626static void 626static Eo *
627_eio_model_eo_base_constructor(Eo *obj, Eio_Model_Data *priv) 627_eio_model_eo_base_constructor(Eo *obj, Eio_Model_Data *priv)
628{ 628{
629 eo_do_super(obj, MY_CLASS, eo_constructor()); 629 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
630 unsigned int i; 630 unsigned int i;
631 priv->obj = obj; 631 priv->obj = obj;
632 632
633 priv->properties_name = eina_array_new(EIO_MODEL_PROP_LAST); 633 priv->properties_name = eina_array_new(EIO_MODEL_PROP_LAST);
634 EINA_SAFETY_ON_NULL_RETURN(priv->properties_name); 634 EINA_SAFETY_ON_NULL_RETURN_VAL(priv->properties_name, NULL);
635 for (i = 0; i < EIO_MODEL_PROP_LAST; ++i) 635 for (i = 0; i < EIO_MODEL_PROP_LAST; ++i)
636 eina_array_push(priv->properties_name, _eio_model_prop_names[i]); 636 eina_array_push(priv->properties_name, _eio_model_prop_names[i]);
637 637
@@ -645,6 +645,8 @@ _eio_model_eo_base_constructor(Eo *obj, Eio_Model_Data *priv)
645 priv->load.status = EFL_MODEL_LOAD_STATUS_UNLOADED; 645 priv->load.status = EFL_MODEL_LOAD_STATUS_UNLOADED;
646 priv->monitor = NULL; 646 priv->monitor = NULL;
647 eina_spinlock_new(&priv->filter_lock); 647 eina_spinlock_new(&priv->filter_lock);
648
649 return obj;
648} 650}
649 651
650static void 652static void
diff --git a/src/lib/emotion/emotion_smart.c b/src/lib/emotion/emotion_smart.c
index 8cf5899..fbbbb49 100644
--- a/src/lib/emotion/emotion_smart.c
+++ b/src/lib/emotion/emotion_smart.c
@@ -263,11 +263,13 @@ emotion_object_add(Evas *evas)
263 return e; 263 return e;
264} 264}
265 265
266EOLIAN static void 266EOLIAN static Eo *
267_emotion_object_eo_base_constructor(Eo *obj, Emotion_Object_Data *pd EINA_UNUSED) 267_emotion_object_eo_base_constructor(Eo *obj, Emotion_Object_Data *pd EINA_UNUSED)
268{ 268{
269 eo_do_super(obj, MY_CLASS, eo_constructor()); 269 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
270 eo_do(obj, evas_obj_type_set(E_OBJ_NAME)); 270 eo_do(obj, evas_obj_type_set(E_OBJ_NAME));
271
272 return obj;
271} 273}
272 274
273EAPI Evas_Object * 275EAPI Evas_Object *
diff --git a/src/lib/eo/Eo.h b/src/lib/eo/Eo.h
index 8a271f9..bc83ddb 100644
--- a/src/lib/eo/Eo.h
+++ b/src/lib/eo/Eo.h
@@ -639,8 +639,8 @@ EAPI void eo_error_set_internal(const Eo *obj, const char *file, int line);
639#define _eo_add_common(klass, parent, is_ref, ...) \ 639#define _eo_add_common(klass, parent, is_ref, ...) \
640 ( \ 640 ( \
641 _eo_do_start(_eo_add_internal_start(__FILE__, __LINE__, klass, parent, is_ref), \ 641 _eo_do_start(_eo_add_internal_start(__FILE__, __LINE__, klass, parent, is_ref), \
642 klass, EINA_FALSE, __FILE__, __FUNCTION__, __LINE__), \ 642 klass, EINA_FALSE, __FILE__, __FUNCTION__, __LINE__) \
643 eo_constructor(), ##__VA_ARGS__, \ 643 , ##__VA_ARGS__, \
644 (Eo *) _eo_add_end() \ 644 (Eo *) _eo_add_end() \
645 ) 645 )
646 646
diff --git a/src/lib/eo/eo.c b/src/lib/eo/eo.c
index 0edac21..d5e1d3a 100644
--- a/src/lib/eo/eo.c
+++ b/src/lib/eo/eo.c
@@ -920,6 +920,18 @@ _eo_add_internal_start(const char *file, int line, const Eo_Class *klass_id, Eo
920 } 920 }
921 } 921 }
922 922
923 /* eo_id can change here. Freeing is done on the resolved object. */
924 eo_do(eo_id, eo_id = eo_constructor());
925 if (!eo_id)
926 {
927 ERR("Object of class '%s' - Error while constructing object",
928 klass->desc->name);
929 /* Unref twice, once for the ref in _eo_add_internal_start, and once for the basic object ref. */
930 _eo_unref(obj);
931 _eo_unref(obj);
932 return NULL;
933 }
934
923 return eo_id; 935 return eo_id;
924} 936}
925 937
diff --git a/src/lib/eo/eo_base.eo b/src/lib/eo/eo_base.eo
index e4bd0e8..5c7123c 100644
--- a/src/lib/eo/eo_base.eo
+++ b/src/lib/eo/eo_base.eo
@@ -45,6 +45,7 @@ Return event freeze count. */
45 constructor { 45 constructor {
46 /*@ Call the object's constructor. 46 /*@ Call the object's constructor.
47Should not be used with #eo_do. Only use it with #eo_do_super. */ 47Should not be used with #eo_do. Only use it with #eo_do_super. */
48 return: Eo *; /*@ The new object created, can be NULL if aborting */
48 } 49 }
49 destructor { 50 destructor {
50 /*@ Call the object's destructor. 51 /*@ Call the object's destructor.
diff --git a/src/lib/eo/eo_base_class.c b/src/lib/eo/eo_base_class.c
index a84dcf0..a263c1e 100644
--- a/src/lib/eo/eo_base_class.c
+++ b/src/lib/eo/eo_base_class.c
@@ -967,12 +967,14 @@ EAPI const Eina_Value_Type *EO_DBG_INFO_TYPE = &_EO_DBG_INFO_TYPE;
967/* EO_BASE_CLASS stuff */ 967/* EO_BASE_CLASS stuff */
968#define MY_CLASS EO_BASE_CLASS 968#define MY_CLASS EO_BASE_CLASS
969 969
970EOLIAN static void 970EOLIAN static Eo *
971_eo_base_constructor(Eo *obj, Eo_Base_Data *pd EINA_UNUSED) 971_eo_base_constructor(Eo *obj, Eo_Base_Data *pd EINA_UNUSED)
972{ 972{
973 DBG("%p - %s.", obj, eo_class_name_get(MY_CLASS)); 973 DBG("%p - %s.", obj, eo_class_name_get(MY_CLASS));
974 974
975 _eo_condtor_done(obj); 975 _eo_condtor_done(obj);
976
977 return obj;
976} 978}
977 979
978EOLIAN static void 980EOLIAN static void
diff --git a/src/lib/evas/canvas/evas_3d_camera.c b/src/lib/evas/canvas/evas_3d_camera.c
index 7a9c8a5..8467f8e 100644
--- a/src/lib/evas/canvas/evas_3d_camera.c
+++ b/src/lib/evas/canvas/evas_3d_camera.c
@@ -62,12 +62,14 @@ evas_3d_camera_node_del(Evas_3D_Camera *camera, Evas_3D_Node *node)
62 else eina_hash_set(pd->nodes, &node, (const void *)(uintptr_t)(count - 1)); 62 else eina_hash_set(pd->nodes, &node, (const void *)(uintptr_t)(count - 1));
63} 63}
64 64
65EOLIAN static void 65EOLIAN static Eo *
66_evas_3d_camera_eo_base_constructor(Eo *obj, 66_evas_3d_camera_eo_base_constructor(Eo *obj,
67 Evas_3D_Camera_Data *pd EINA_UNUSED) 67 Evas_3D_Camera_Data *pd EINA_UNUSED)
68{ 68{
69 eo_do_super(obj, MY_CLASS, eo_constructor()); 69 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
70 eo_do(obj, evas_3d_object_type_set(EVAS_3D_OBJECT_TYPE_CAMERA)); 70 eo_do(obj, evas_3d_object_type_set(EVAS_3D_OBJECT_TYPE_CAMERA));
71
72 return obj;
71} 73}
72 74
73EOLIAN static void 75EOLIAN static void
diff --git a/src/lib/evas/canvas/evas_3d_light.c b/src/lib/evas/canvas/evas_3d_light.c
index d8c73b6..455ded6 100644
--- a/src/lib/evas/canvas/evas_3d_light.c
+++ b/src/lib/evas/canvas/evas_3d_light.c
@@ -76,10 +76,10 @@ evas_3d_light_add(Evas *e)
76 return eo_obj; 76 return eo_obj;
77} 77}
78 78
79EOLIAN static void 79EOLIAN static Eo *
80_evas_3d_light_eo_base_constructor(Eo *obj, Evas_3D_Light_Data *pd) 80_evas_3d_light_eo_base_constructor(Eo *obj, Evas_3D_Light_Data *pd)
81{ 81{
82 eo_do_super(obj, MY_CLASS, eo_constructor()); 82 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
83 eo_do(obj, evas_3d_object_type_set(EVAS_3D_OBJECT_TYPE_LIGHT)); 83 eo_do(obj, evas_3d_object_type_set(EVAS_3D_OBJECT_TYPE_LIGHT));
84 evas_color_set(&pd->ambient, 0.0, 0.0, 0.0, 1.0); 84 evas_color_set(&pd->ambient, 0.0, 0.0, 0.0, 1.0);
85 evas_color_set(&pd->diffuse, 1.0, 1.0, 1.0, 1.0); 85 evas_color_set(&pd->diffuse, 1.0, 1.0, 1.0, 1.0);
@@ -92,6 +92,8 @@ _evas_3d_light_eo_base_constructor(Eo *obj, Evas_3D_Light_Data *pd)
92 pd->atten_const = 1.0; 92 pd->atten_const = 1.0;
93 pd->atten_linear = 0.0; 93 pd->atten_linear = 0.0;
94 pd->atten_quad = 0.0; 94 pd->atten_quad = 0.0;
95
96 return obj;
95} 97}
96 98
97EOLIAN static void 99EOLIAN static void
diff --git a/src/lib/evas/canvas/evas_3d_material.c b/src/lib/evas/canvas/evas_3d_material.c
index aee8c85..5d609ca 100644
--- a/src/lib/evas/canvas/evas_3d_material.c
+++ b/src/lib/evas/canvas/evas_3d_material.c
@@ -88,10 +88,10 @@ evas_3d_material_add(Evas *e)
88 return eo_obj; 88 return eo_obj;
89} 89}
90 90
91EOLIAN static void 91EOLIAN static Eo *
92_evas_3d_material_eo_base_constructor(Eo *obj EINA_UNUSED, Evas_3D_Material_Data *pd) 92_evas_3d_material_eo_base_constructor(Eo *obj EINA_UNUSED, Evas_3D_Material_Data *pd)
93{ 93{
94 eo_do_super(obj, MY_CLASS, eo_constructor()); 94 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
95 eo_do(obj, evas_3d_object_type_set(EVAS_3D_OBJECT_TYPE_MATERIAL)); 95 eo_do(obj, evas_3d_object_type_set(EVAS_3D_OBJECT_TYPE_MATERIAL));
96 96
97 evas_color_set(&pd->attribs[EVAS_3D_MATERIAL_AMBIENT].color, 0.2, 0.2, 0.2, 1.0); 97 evas_color_set(&pd->attribs[EVAS_3D_MATERIAL_AMBIENT].color, 0.2, 0.2, 0.2, 1.0);
@@ -99,6 +99,8 @@ _evas_3d_material_eo_base_constructor(Eo *obj EINA_UNUSED, Evas_3D_Material_Data
99 evas_color_set(&pd->attribs[EVAS_3D_MATERIAL_SPECULAR].color, 1.0, 1.0, 1.0, 1.0); 99 evas_color_set(&pd->attribs[EVAS_3D_MATERIAL_SPECULAR].color, 1.0, 1.0, 1.0, 1.0);
100 evas_color_set(&pd->attribs[EVAS_3D_MATERIAL_EMISSION].color, 0.0, 0.0, 0.0, 1.0); 100 evas_color_set(&pd->attribs[EVAS_3D_MATERIAL_EMISSION].color, 0.0, 0.0, 0.0, 1.0);
101 pd->shininess = 150.0; 101 pd->shininess = 150.0;
102
103 return obj;
102} 104}
103 105
104EOLIAN static void 106EOLIAN static void
diff --git a/src/lib/evas/canvas/evas_3d_mesh.c b/src/lib/evas/canvas/evas_3d_mesh.c
index df9d135..1b8cc14 100644
--- a/src/lib/evas/canvas/evas_3d_mesh.c
+++ b/src/lib/evas/canvas/evas_3d_mesh.c
@@ -252,12 +252,14 @@ evas_3d_mesh_add(Evas *e)
252 return eo_obj; 252 return eo_obj;
253} 253}
254 254
255EOLIAN static void 255EOLIAN static Eo *
256_evas_3d_mesh_eo_base_constructor(Eo *obj, Evas_3D_Mesh_Data *pd) 256_evas_3d_mesh_eo_base_constructor(Eo *obj, Evas_3D_Mesh_Data *pd)
257{ 257{
258 eo_do_super(obj, MY_CLASS, eo_constructor()); 258 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
259 eo_do (obj, evas_3d_object_type_set(EVAS_3D_OBJECT_TYPE_MESH)); 259 eo_do (obj, evas_3d_object_type_set(EVAS_3D_OBJECT_TYPE_MESH));
260 _mesh_init(pd); 260 _mesh_init(pd);
261
262 return obj;
261} 263}
262 264
263EOLIAN static void 265EOLIAN static void
diff --git a/src/lib/evas/canvas/evas_3d_object.c b/src/lib/evas/canvas/evas_3d_object.c
index 6cd2cb4..5776fde 100644
--- a/src/lib/evas/canvas/evas_3d_object.c
+++ b/src/lib/evas/canvas/evas_3d_object.c
@@ -3,15 +3,17 @@
3 3
4#define MY_CLASS EVAS_3D_OBJECT_CLASS 4#define MY_CLASS EVAS_3D_OBJECT_CLASS
5 5
6EOLIAN static void 6EOLIAN static Eo *
7_evas_3d_object_eo_base_constructor(Eo *obj, Evas_3D_Object_Data *pd) 7_evas_3d_object_eo_base_constructor(Eo *obj, Evas_3D_Object_Data *pd)
8{ 8{
9 Eo *e = NULL; 9 Eo *e = NULL;
10 eo_do_super(obj, MY_CLASS, eo_constructor()); 10 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
11 eo_do(obj, e = eo_parent_get()); 11 eo_do(obj, e = eo_parent_get());
12 pd->evas = e; 12 pd->evas = e;
13 pd->type = EVAS_3D_OBJECT_TYPE_INVALID; 13 pd->type = EVAS_3D_OBJECT_TYPE_INVALID;
14 memset(&pd->dirty[0], 0x00, sizeof(Eina_Bool) * EVAS_3D_STATE_MAX); 14 memset(&pd->dirty[0], 0x00, sizeof(Eina_Bool) * EVAS_3D_STATE_MAX);
15
16 return obj;
15} 17}
16 18
17EOLIAN static Evas * 19EOLIAN static Evas *
diff --git a/src/lib/evas/canvas/evas_3d_scene.c b/src/lib/evas/canvas/evas_3d_scene.c
index 0bc0fb3..2b33c8a 100644
--- a/src/lib/evas/canvas/evas_3d_scene.c
+++ b/src/lib/evas/canvas/evas_3d_scene.c
@@ -64,16 +64,18 @@ evas_3d_scene_add(Evas *e)
64 return eo_obj; 64 return eo_obj;
65} 65}
66 66
67EOLIAN static void 67EOLIAN static Eo *
68_evas_3d_scene_eo_base_constructor(Eo *obj, Evas_3D_Scene_Data *pd) 68_evas_3d_scene_eo_base_constructor(Eo *obj, Evas_3D_Scene_Data *pd)
69{ 69{
70 eo_do_super(obj, MY_CLASS, eo_constructor()); 70 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
71 eo_do(obj, evas_3d_object_type_set(EVAS_3D_OBJECT_TYPE_SCENE)); 71 eo_do(obj, evas_3d_object_type_set(EVAS_3D_OBJECT_TYPE_SCENE));
72 evas_color_set(&pd->bg_color, 0.0, 0.0, 0.0, 0.0); 72 evas_color_set(&pd->bg_color, 0.0, 0.0, 0.0, 0.0);
73 pd->shadows_enabled = EINA_FALSE; 73 pd->shadows_enabled = EINA_FALSE;
74 pd->color_pick_enabled = EINA_FALSE; 74 pd->color_pick_enabled = EINA_FALSE;
75 pd->node_mesh_colors = NULL; 75 pd->node_mesh_colors = NULL;
76 pd->colors_node_mesh = NULL; 76 pd->colors_node_mesh = NULL;
77
78 return obj;
77} 79}
78 80
79EOLIAN static void 81EOLIAN static void
diff --git a/src/lib/evas/canvas/evas_3d_texture.c b/src/lib/evas/canvas/evas_3d_texture.c
index 8b68d81..c221b43 100644
--- a/src/lib/evas/canvas/evas_3d_texture.c
+++ b/src/lib/evas/canvas/evas_3d_texture.c
@@ -319,13 +319,15 @@ evas_3d_texture_add(Evas *e)
319} 319}
320 320
321 321
322EOLIAN static void 322EOLIAN static Eo *
323_evas_3d_texture_eo_base_constructor(Eo *obj, Evas_3D_Texture_Data *pd EINA_UNUSED) 323_evas_3d_texture_eo_base_constructor(Eo *obj, Evas_3D_Texture_Data *pd EINA_UNUSED)
324{ 324{
325 eo_do_super(obj, MY_CLASS, eo_constructor()); 325 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
326 pd->atlas_enable = EINA_TRUE; 326 pd->atlas_enable = EINA_TRUE;
327 327
328 eo_do(obj, evas_3d_object_type_set(EVAS_3D_OBJECT_TYPE_TEXTURE)); 328 eo_do(obj, evas_3d_object_type_set(EVAS_3D_OBJECT_TYPE_TEXTURE));
329
330 return obj;
329} 331}
330 332
331EOLIAN static void 333EOLIAN static void
diff --git a/src/lib/evas/canvas/evas_main.c b/src/lib/evas/canvas/evas_main.c
index b14194d..1935d40 100644
--- a/src/lib/evas/canvas/evas_main.c
+++ b/src/lib/evas/canvas/evas_main.c
@@ -148,10 +148,10 @@ evas_new(void)
148 return eo_obj; 148 return eo_obj;
149} 149}
150 150
151EOLIAN static void 151EOLIAN static Eo *
152_evas_canvas_eo_base_constructor(Eo *eo_obj, Evas_Public_Data *e) 152_evas_canvas_eo_base_constructor(Eo *eo_obj, Evas_Public_Data *e)
153{ 153{
154 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 154 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
155 155
156 e->evas = eo_obj; 156 e->evas = eo_obj;
157 e->output.render_method = RENDER_METHOD_INVALID; 157 e->output.render_method = RENDER_METHOD_INVALID;
@@ -185,6 +185,8 @@ _evas_canvas_eo_base_constructor(Eo *eo_obj, Evas_Public_Data *e)
185 185
186#undef EVAS_ARRAY_SET 186#undef EVAS_ARRAY_SET
187 eina_lock_new(&(e->lock_objects)); 187 eina_lock_new(&(e->lock_objects));
188
189 return eo_obj;
188} 190}
189 191
190EAPI void 192EAPI void
diff --git a/src/lib/evas/canvas/evas_object_box.c b/src/lib/evas/canvas/evas_object_box.c
index 1c42728..eda1bcd 100644
--- a/src/lib/evas/canvas/evas_object_box.c
+++ b/src/lib/evas/canvas/evas_object_box.c
@@ -462,13 +462,15 @@ evas_object_box_add(Evas *evas)
462 return obj; 462 return obj;
463} 463}
464 464
465EOLIAN static void 465EOLIAN static Eo *
466_evas_box_eo_base_constructor(Eo *obj, Evas_Object_Box_Data *class_data EINA_UNUSED) 466_evas_box_eo_base_constructor(Eo *obj, Evas_Object_Box_Data *class_data EINA_UNUSED)
467{ 467{
468 eo_do_super(obj, MY_CLASS, eo_constructor()); 468 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
469 eo_do(obj, 469 eo_do(obj,
470 evas_obj_smart_callbacks_descriptions_set(_signals), 470 evas_obj_smart_callbacks_descriptions_set(_signals),
471 evas_obj_type_set(MY_CLASS_NAME_LEGACY)); 471 evas_obj_type_set(MY_CLASS_NAME_LEGACY));
472
473 return obj;
472} 474}
473 475
474EOLIAN static Evas_Object* 476EOLIAN static Evas_Object*
diff --git a/src/lib/evas/canvas/evas_object_grid.c b/src/lib/evas/canvas/evas_object_grid.c
index a55584e..7d5e6d2 100644
--- a/src/lib/evas/canvas/evas_object_grid.c
+++ b/src/lib/evas/canvas/evas_object_grid.c
@@ -269,12 +269,13 @@ evas_object_grid_add(Evas *evas)
269 return obj; 269 return obj;
270} 270}
271 271
272EOLIAN static void 272EOLIAN static Eo *
273_evas_grid_eo_base_constructor(Eo *obj, Evas_Grid_Data *class_data EINA_UNUSED) 273_evas_grid_eo_base_constructor(Eo *obj, Evas_Grid_Data *class_data EINA_UNUSED)
274{ 274{
275 eo_do_super(obj, MY_CLASS, eo_constructor()); 275 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
276 eo_do(obj, evas_obj_smart_attach(_evas_object_grid_smart_class_new())); 276 eo_do(obj, evas_obj_smart_attach(_evas_object_grid_smart_class_new()));
277 277
278 return obj;
278// return evas_object_smart_add(evas, _evas_object_grid_smart_class_new()); 279// return evas_object_smart_add(evas, _evas_object_grid_smart_class_new());
279} 280}
280 281
diff --git a/src/lib/evas/canvas/evas_object_image.c b/src/lib/evas/canvas/evas_object_image.c
index cabeebb..5e59dbb 100644
--- a/src/lib/evas/canvas/evas_object_image.c
+++ b/src/lib/evas/canvas/evas_object_image.c
@@ -342,7 +342,7 @@ _init_cow(Eo *eo_obj)
342 return EINA_TRUE; 342 return EINA_TRUE;
343} 343}
344 344
345EOLIAN static void 345EOLIAN static Eo *
346_evas_image_eo_base_constructor(Eo *eo_obj, Evas_Image_Data *o) 346_evas_image_eo_base_constructor(Eo *eo_obj, Evas_Image_Data *o)
347{ 347{
348 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 348 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
@@ -350,7 +350,7 @@ _evas_image_eo_base_constructor(Eo *eo_obj, Evas_Image_Data *o)
350 Eo *parent = NULL; 350 Eo *parent = NULL;
351 Evas_Colorspace cspace; 351 Evas_Colorspace cspace;
352 352
353 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 353 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
354 354
355 eo_do(eo_obj, parent = eo_parent_get()); 355 eo_do(eo_obj, parent = eo_parent_get());
356 eo_e = evas_object_evas_get(parent); 356 eo_e = evas_object_evas_get(parent);
@@ -359,7 +359,7 @@ _evas_image_eo_base_constructor(Eo *eo_obj, Evas_Image_Data *o)
359 evas_object_inject(eo_obj, obj, eo_e); 359 evas_object_inject(eo_obj, obj, eo_e);
360 360
361 if (!_init_cow(eo_obj)) 361 if (!_init_cow(eo_obj))
362 return; 362 return NULL;
363 363
364 o->load_opts = eina_cow_alloc(evas_object_image_load_opts_cow); 364 o->load_opts = eina_cow_alloc(evas_object_image_load_opts_cow);
365 o->pixels = eina_cow_alloc(evas_object_image_pixels_cow); 365 o->pixels = eina_cow_alloc(evas_object_image_pixels_cow);
@@ -377,6 +377,8 @@ _evas_image_eo_base_constructor(Eo *eo_obj, Evas_Image_Data *o)
377 state_write->filter = eina_cow_alloc(evas_object_filter_cow); 377 state_write->filter = eina_cow_alloc(evas_object_filter_cow);
378 EINA_COW_IMAGE_STATE_WRITE_END(o, state_write); 378 EINA_COW_IMAGE_STATE_WRITE_END(o, state_write);
379 } 379 }
380
381 return eo_obj;
380} 382}
381 383
382EAPI Evas_Object * 384EAPI Evas_Object *
diff --git a/src/lib/evas/canvas/evas_object_line.c b/src/lib/evas/canvas/evas_object_line.c
index 8090c61..df9570a 100644
--- a/src/lib/evas/canvas/evas_object_line.c
+++ b/src/lib/evas/canvas/evas_object_line.c
@@ -214,14 +214,14 @@ evas_object_line_init(Evas_Object *eo_obj)
214 obj->type = o_type; 214 obj->type = o_type;
215} 215}
216 216
217EOLIAN static void 217EOLIAN static Eo *
218_evas_line_eo_base_constructor(Eo *eo_obj, Evas_Line_Data *class_data EINA_UNUSED) 218_evas_line_eo_base_constructor(Eo *eo_obj, Evas_Line_Data *class_data EINA_UNUSED)
219{ 219{
220 Evas_Object_Protected_Data *obj; 220 Evas_Object_Protected_Data *obj;
221 Evas_Line_Data *o; 221 Evas_Line_Data *o;
222 Eo *parent = NULL; 222 Eo *parent = NULL;
223 223
224 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 224 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
225 225
226 obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 226 obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
227 evas_object_line_init(eo_obj); 227 evas_object_line_init(eo_obj);
@@ -235,6 +235,8 @@ _evas_line_eo_base_constructor(Eo *eo_obj, Evas_Line_Data *class_data EINA_UNUSE
235 o->cur.x2 = 31; 235 o->cur.x2 = 31;
236 o->cur.y2 = 31; 236 o->cur.y2 = 31;
237 o->prev = o->cur; 237 o->prev = o->cur;
238
239 return eo_obj;
238} 240}
239 241
240static void 242static void
diff --git a/src/lib/evas/canvas/evas_object_main.c b/src/lib/evas/canvas/evas_object_main.c
index 5f0db50..c77db68 100644
--- a/src/lib/evas/canvas/evas_object_main.c
+++ b/src/lib/evas/canvas/evas_object_main.c
@@ -82,12 +82,12 @@ _init_cow(void)
82 return EINA_TRUE; 82 return EINA_TRUE;
83} 83}
84 84
85EOLIAN static void 85EOLIAN static Eo *
86_evas_object_eo_base_constructor(Eo *eo_obj, Evas_Object_Protected_Data *obj) 86_evas_object_eo_base_constructor(Eo *eo_obj, Evas_Object_Protected_Data *obj)
87{ 87{
88 Eo *parent = NULL; 88 Eo *parent = NULL;
89 89
90 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 90 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
91 eo_do(eo_obj, evas_obj_type_set(MY_CLASS_NAME)); 91 eo_do(eo_obj, evas_obj_type_set(MY_CLASS_NAME));
92 eo_manual_free_set(eo_obj, EINA_TRUE); 92 eo_manual_free_set(eo_obj, EINA_TRUE);
93 93
@@ -96,7 +96,7 @@ _evas_object_eo_base_constructor(Eo *eo_obj, Evas_Object_Protected_Data *obj)
96 if (!obj || !_init_cow() || !eo_isa(parent, EVAS_COMMON_INTERFACE_INTERFACE)) 96 if (!obj || !_init_cow() || !eo_isa(parent, EVAS_COMMON_INTERFACE_INTERFACE))
97 { 97 {
98 eo_error_set(eo_obj); 98 eo_error_set(eo_obj);
99 return; 99 return NULL;
100 } 100 }
101 101
102 obj->is_frame = EINA_FALSE; 102 obj->is_frame = EINA_FALSE;
@@ -107,6 +107,8 @@ _evas_object_eo_base_constructor(Eo *eo_obj, Evas_Object_Protected_Data *obj)
107 obj->prev = eina_cow_alloc(evas_object_state_cow); 107 obj->prev = eina_cow_alloc(evas_object_state_cow);
108 obj->data_3d = eina_cow_alloc(evas_object_3d_cow); 108 obj->data_3d = eina_cow_alloc(evas_object_3d_cow);
109 obj->mask = eina_cow_alloc(evas_object_mask_cow); 109 obj->mask = eina_cow_alloc(evas_object_mask_cow);
110
111 return eo_obj;
110} 112}
111 113
112void 114void
diff --git a/src/lib/evas/canvas/evas_object_polygon.c b/src/lib/evas/canvas/evas_object_polygon.c
index 4e5ed04..4e5c636 100644
--- a/src/lib/evas/canvas/evas_object_polygon.c
+++ b/src/lib/evas/canvas/evas_object_polygon.c
@@ -101,18 +101,20 @@ evas_object_polygon_add(Evas *e)
101 return eo_obj; 101 return eo_obj;
102} 102}
103 103
104EOLIAN static void 104EOLIAN static Eo *
105_evas_polygon_eo_base_constructor(Eo *eo_obj, Evas_Polygon_Data *class_data EINA_UNUSED) 105_evas_polygon_eo_base_constructor(Eo *eo_obj, Evas_Polygon_Data *class_data EINA_UNUSED)
106{ 106{
107 Evas_Object_Protected_Data *obj; 107 Evas_Object_Protected_Data *obj;
108 Eo *parent = NULL; 108 Eo *parent = NULL;
109 109
110 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 110 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
111 111
112 obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 112 obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
113 evas_object_polygon_init(eo_obj); 113 evas_object_polygon_init(eo_obj);
114 eo_do(eo_obj, parent = eo_parent_get()); 114 eo_do(eo_obj, parent = eo_parent_get());
115 evas_object_inject(eo_obj, obj, evas_object_evas_get(parent)); 115 evas_object_inject(eo_obj, obj, evas_object_evas_get(parent));
116
117 return eo_obj;
116} 118}
117 119
118EOLIAN static void 120EOLIAN static void
diff --git a/src/lib/evas/canvas/evas_object_rectangle.c b/src/lib/evas/canvas/evas_object_rectangle.c
index 9454a3d..cdee4ad 100644
--- a/src/lib/evas/canvas/evas_object_rectangle.c
+++ b/src/lib/evas/canvas/evas_object_rectangle.c
@@ -89,18 +89,20 @@ evas_object_rectangle_add(Evas *e)
89 return eo_obj; 89 return eo_obj;
90} 90}
91 91
92EOLIAN static void 92EOLIAN static Eo *
93_evas_rectangle_eo_base_constructor(Eo *eo_obj, Evas_Rectangle_Data *class_data EINA_UNUSED) 93_evas_rectangle_eo_base_constructor(Eo *eo_obj, Evas_Rectangle_Data *class_data EINA_UNUSED)
94{ 94{
95 Eo *parent = NULL; 95 Eo *parent = NULL;
96 96
97 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 97 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
98 98
99 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 99 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
100 evas_object_rectangle_init(eo_obj); 100 evas_object_rectangle_init(eo_obj);
101 101
102 eo_do(eo_obj, parent = eo_parent_get()); 102 eo_do(eo_obj, parent = eo_parent_get());
103 evas_object_inject(eo_obj, obj, evas_object_evas_get(parent)); 103 evas_object_inject(eo_obj, obj, evas_object_evas_get(parent));
104
105 return eo_obj;
104} 106}
105 107
106/* all nice and private */ 108/* all nice and private */
diff --git a/src/lib/evas/canvas/evas_object_smart.c b/src/lib/evas/canvas/evas_object_smart.c
index 4623fc0..3aeb937 100644
--- a/src/lib/evas/canvas/evas_object_smart.c
+++ b/src/lib/evas/canvas/evas_object_smart.c
@@ -545,7 +545,7 @@ evas_object_smart_add(Evas *eo_e, Evas_Smart *s)
545 return eo_obj; 545 return eo_obj;
546} 546}
547 547
548EOLIAN static void 548EOLIAN static Eo *
549_evas_object_smart_eo_base_constructor(Eo *eo_obj, Evas_Smart_Data *class_data EINA_UNUSED) 549_evas_object_smart_eo_base_constructor(Eo *eo_obj, Evas_Smart_Data *class_data EINA_UNUSED)
550{ 550{
551 Evas_Object_Protected_Data *obj; 551 Evas_Object_Protected_Data *obj;
@@ -555,7 +555,7 @@ _evas_object_smart_eo_base_constructor(Eo *eo_obj, Evas_Smart_Data *class_data E
555 smart = class_data; 555 smart = class_data;
556 smart->object = eo_obj; 556 smart->object = eo_obj;
557 557
558 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 558 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
559 evas_object_smart_init(eo_obj); 559 evas_object_smart_init(eo_obj);
560 560
561 obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 561 obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
@@ -564,6 +564,8 @@ _evas_object_smart_eo_base_constructor(Eo *eo_obj, Evas_Smart_Data *class_data E
564 eo_do(eo_obj, 564 eo_do(eo_obj,
565 evas_obj_type_set(MY_CLASS_NAME_LEGACY), 565 evas_obj_type_set(MY_CLASS_NAME_LEGACY),
566 evas_obj_smart_add()); 566 evas_obj_smart_add());
567
568 return eo_obj;
567} 569}
568 570
569EOLIAN static void 571EOLIAN static void
diff --git a/src/lib/evas/canvas/evas_object_smart_clipped.c b/src/lib/evas/canvas/evas_object_smart_clipped.c
index 38382f2..7472044 100644
--- a/src/lib/evas/canvas/evas_object_smart_clipped.c
+++ b/src/lib/evas/canvas/evas_object_smart_clipped.c
@@ -250,10 +250,10 @@ evas_object_smart_clipped_class_get(void)
250 return class; 250 return class;
251} 251}
252 252
253EOLIAN static void 253EOLIAN static Eo *
254_evas_smart_clipped_eo_base_constructor(Eo *eo_obj, Evas_Object_Smart_Clipped_Data *class_data EINA_UNUSED) 254_evas_smart_clipped_eo_base_constructor(Eo *obj, Evas_Object_Smart_Clipped_Data *class_data EINA_UNUSED)
255{ 255{
256 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 256 return eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
257} 257}
258 258
259#include "canvas/evas_smart_clipped.eo.c" 259#include "canvas/evas_smart_clipped.eo.c"
diff --git a/src/lib/evas/canvas/evas_object_table.c b/src/lib/evas/canvas/evas_object_table.c
index ea50553..cc61e19 100644
--- a/src/lib/evas/canvas/evas_object_table.c
+++ b/src/lib/evas/canvas/evas_object_table.c
@@ -966,11 +966,13 @@ evas_object_table_add(Evas *evas)
966 return obj; 966 return obj;
967} 967}
968 968
969EOLIAN static void 969EOLIAN static Eo *
970_evas_table_eo_base_constructor(Eo *obj, Evas_Table_Data *class_data EINA_UNUSED) 970_evas_table_eo_base_constructor(Eo *obj, Evas_Table_Data *class_data EINA_UNUSED)
971{ 971{
972 eo_do_super(obj, MY_CLASS, eo_constructor()); 972 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
973 eo_do(obj, evas_obj_type_set(MY_CLASS_NAME_LEGACY)); 973 eo_do(obj, evas_obj_type_set(MY_CLASS_NAME_LEGACY));
974
975 return obj;
974} 976}
975 977
976EOLIAN static Evas_Object* 978EOLIAN static Evas_Object*
diff --git a/src/lib/evas/canvas/evas_object_text.c b/src/lib/evas/canvas/evas_object_text.c
index c053515..c28e8a9 100644
--- a/src/lib/evas/canvas/evas_object_text.c
+++ b/src/lib/evas/canvas/evas_object_text.c
@@ -365,10 +365,10 @@ evas_object_text_add(Evas *e)
365 return eo_obj; 365 return eo_obj;
366} 366}
367 367
368EOLIAN static void 368EOLIAN static Eo *
369_evas_text_eo_base_constructor(Eo *eo_obj, Evas_Text_Data *o) 369_evas_text_eo_base_constructor(Eo *eo_obj, Evas_Text_Data *o)
370{ 370{
371 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 371 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
372 evas_object_text_init(eo_obj); 372 evas_object_text_init(eo_obj);
373 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 373 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
374 Eo *parent = NULL; 374 Eo *parent = NULL;
@@ -377,6 +377,8 @@ _evas_text_eo_base_constructor(Eo *eo_obj, Evas_Text_Data *o)
377 evas_object_inject(eo_obj, obj, evas_object_evas_get(parent)); 377 evas_object_inject(eo_obj, obj, evas_object_evas_get(parent));
378 378
379 o->cur.filter = eina_cow_alloc(evas_object_filter_cow); 379 o->cur.filter = eina_cow_alloc(evas_object_filter_cow);
380
381 return eo_obj;
380} 382}
381 383
382EOLIAN static void 384EOLIAN static void
diff --git a/src/lib/evas/canvas/evas_object_textblock.c b/src/lib/evas/canvas/evas_object_textblock.c
index 688e09d..a2d7079 100644
--- a/src/lib/evas/canvas/evas_object_textblock.c
+++ b/src/lib/evas/canvas/evas_object_textblock.c
@@ -5782,14 +5782,14 @@ evas_object_textblock_add(Evas *e)
5782 return eo_obj; 5782 return eo_obj;
5783} 5783}
5784 5784
5785EOLIAN static void 5785EOLIAN static Eo *
5786_evas_textblock_eo_base_constructor(Eo *eo_obj, Evas_Textblock_Data *class_data EINA_UNUSED) 5786_evas_textblock_eo_base_constructor(Eo *eo_obj, Evas_Textblock_Data *class_data EINA_UNUSED)
5787{ 5787{
5788 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 5788 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
5789 Evas_Textblock_Data *o; 5789 Evas_Textblock_Data *o;
5790 Eo *eo_parent = NULL; 5790 Eo *eo_parent = NULL;
5791 5791
5792 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 5792 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
5793 5793
5794 /* set up methods (compulsory) */ 5794 /* set up methods (compulsory) */
5795 obj->func = &object_func; 5795 obj->func = &object_func;
@@ -5803,6 +5803,8 @@ _evas_textblock_eo_base_constructor(Eo *eo_obj, Evas_Textblock_Data *class_data
5803 5803
5804 eo_do(eo_obj, eo_parent = eo_parent_get()); 5804 eo_do(eo_obj, eo_parent = eo_parent_get());
5805 evas_object_inject(eo_obj, obj, evas_object_evas_get(eo_parent)); 5805 evas_object_inject(eo_obj, obj, evas_object_evas_get(eo_parent));
5806
5807 return eo_obj;
5806} 5808}
5807 5809
5808EAPI Evas_Textblock_Style * 5810EAPI Evas_Textblock_Style *
diff --git a/src/lib/evas/canvas/evas_object_textgrid.c b/src/lib/evas/canvas/evas_object_textgrid.c
index 122e8e7..7dbb739 100644
--- a/src/lib/evas/canvas/evas_object_textgrid.c
+++ b/src/lib/evas/canvas/evas_object_textgrid.c
@@ -1061,18 +1061,20 @@ evas_object_textgrid_add(Evas *e)
1061 return eo_obj; 1061 return eo_obj;
1062} 1062}
1063 1063
1064EOLIAN static void 1064EOLIAN static Eo *
1065_evas_textgrid_eo_base_constructor(Eo *eo_obj, Evas_Textgrid_Data *class_data EINA_UNUSED) 1065_evas_textgrid_eo_base_constructor(Eo *eo_obj, Evas_Textgrid_Data *class_data EINA_UNUSED)
1066{ 1066{
1067 Eo *eo_parent = NULL; 1067 Eo *eo_parent = NULL;
1068 1068
1069 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 1069 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
1070 1070
1071 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 1071 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1072 evas_object_textgrid_init(eo_obj); 1072 evas_object_textgrid_init(eo_obj);
1073 1073
1074 eo_do(eo_obj, eo_parent = eo_parent_get()); 1074 eo_do(eo_obj, eo_parent = eo_parent_get());
1075 evas_object_inject(eo_obj, obj, evas_object_evas_get(eo_parent)); 1075 evas_object_inject(eo_obj, obj, evas_object_evas_get(eo_parent));
1076
1077 return eo_obj;
1076} 1078}
1077 1079
1078EOLIAN static void 1080EOLIAN static void
diff --git a/src/lib/evas/canvas/evas_object_vg.c b/src/lib/evas/canvas/evas_object_vg.c
index 731eec6..0e3eaa7 100644
--- a/src/lib/evas/canvas/evas_object_vg.c
+++ b/src/lib/evas/canvas/evas_object_vg.c
@@ -98,13 +98,13 @@ _evas_vg_eo_base_destructor(Eo *eo_obj, Evas_VG_Data *pd)
98 eo_do_super(eo_obj, MY_CLASS, eo_destructor()); 98 eo_do_super(eo_obj, MY_CLASS, eo_destructor());
99} 99}
100 100
101void 101Eo *
102_evas_vg_eo_base_constructor(Eo *eo_obj, Evas_VG_Data *pd) 102_evas_vg_eo_base_constructor(Eo *eo_obj, Evas_VG_Data *pd)
103{ 103{
104 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 104 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
105 Eo *parent = NULL; 105 Eo *parent = NULL;
106 106
107 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 107 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
108 108
109 /* set up methods (compulsory) */ 109 /* set up methods (compulsory) */
110 obj->func = &object_func; 110 obj->func = &object_func;
@@ -117,6 +117,8 @@ _evas_vg_eo_base_constructor(Eo *eo_obj, Evas_VG_Data *pd)
117 117
118 eo_do(eo_obj, parent = eo_parent_get()); 118 eo_do(eo_obj, parent = eo_parent_get());
119 evas_object_inject(eo_obj, obj, evas_object_evas_get(parent)); 119 evas_object_inject(eo_obj, obj, evas_object_evas_get(parent));
120
121 return eo_obj;
120} 122}
121 123
122static void 124static void
diff --git a/src/lib/evas/canvas/evas_out.c b/src/lib/evas/canvas/evas_out.c
index ce00eb3..1558a90 100644
--- a/src/lib/evas/canvas/evas_out.c
+++ b/src/lib/evas/canvas/evas_out.c
@@ -23,7 +23,7 @@ evas_out_add(Evas *e)
23 return eo_obj; 23 return eo_obj;
24} 24}
25 25
26EOLIAN static void 26EOLIAN static Eo *
27_evas_out_eo_base_constructor(Eo *eo_obj, Evas_Out_Data *eo_dat) 27_evas_out_eo_base_constructor(Eo *eo_obj, Evas_Out_Data *eo_dat)
28{ 28{
29 Eo *eo_parent = NULL; 29 Eo *eo_parent = NULL;
@@ -33,14 +33,16 @@ _evas_out_eo_base_constructor(Eo *eo_obj, Evas_Out_Data *eo_dat)
33 e = eo_data_scope_get(eo_parent, EVAS_CANVAS_CLASS); 33 e = eo_data_scope_get(eo_parent, EVAS_CANVAS_CLASS);
34 evas_canvas_async_block(e); 34 evas_canvas_async_block(e);
35 35
36 eo_do_super(eo_obj, MY_CLASS, eo_constructor()); 36 eo_obj = eo_do_super_ret(eo_obj, MY_CLASS, eo_obj, eo_constructor());
37 37
38 if (!e) return; 38 if (!e) return NULL;
39 e->outputs = eina_list_append(e->outputs, eo_obj); 39 e->outputs = eina_list_append(e->outputs, eo_obj);
40 if (e->engine.func->info) eo_dat->info = e->engine.func->info(eo_parent); 40 if (e->engine.func->info) eo_dat->info = e->engine.func->info(eo_parent);
41 // XXX: context and output are currently held in the core engine and are 41 // XXX: context and output are currently held in the core engine and are
42 // allocated by engine specific internal code. this all needs a new engine 42 // allocated by engine specific internal code. this all needs a new engine
43 // api to make it work 43 // api to make it work
44
45 return eo_obj;
44} 46}
45 47
46EAPI void 48EAPI void
diff --git a/src/lib/evas/canvas/evas_vg_container.c b/src/lib/evas/canvas/evas_vg_container.c
index ba0eeec..f3ee7c9 100644
--- a/src/lib/evas/canvas/evas_vg_container.c
+++ b/src/lib/evas/canvas/evas_vg_container.c
@@ -25,17 +25,19 @@ _efl_vg_container_render_pre(Eo *obj EINA_UNUSED,
25 _evas_vg_render_pre(child, s, current); 25 _evas_vg_render_pre(child, s, current);
26} 26}
27 27
28static void 28static Eo *
29_efl_vg_container_eo_base_constructor(Eo *obj, 29_efl_vg_container_eo_base_constructor(Eo *obj,
30 Efl_VG_Container_Data *pd) 30 Efl_VG_Container_Data *pd)
31{ 31{
32 Efl_VG_Base_Data *nd; 32 Efl_VG_Base_Data *nd;
33 33
34 eo_do_super(obj, MY_CLASS, eo_constructor()); 34 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
35 35
36 nd = eo_data_scope_get(obj, EFL_VG_BASE_CLASS); 36 nd = eo_data_scope_get(obj, EFL_VG_BASE_CLASS);
37 nd->render_pre = _efl_vg_container_render_pre; 37 nd->render_pre = _efl_vg_container_render_pre;
38 nd->data = pd; 38 nd->data = pd;
39
40 return obj;
39} 41}
40 42
41static void 43static void
diff --git a/src/lib/evas/canvas/evas_vg_gradient_linear.c b/src/lib/evas/canvas/evas_vg_gradient_linear.c
index 9f05fac..9a54f7a 100644
--- a/src/lib/evas/canvas/evas_vg_gradient_linear.c
+++ b/src/lib/evas/canvas/evas_vg_gradient_linear.c
@@ -88,17 +88,19 @@ _efl_vg_gradient_linear_render_pre(Eo *obj,
88 ector_renderer_prepare()); 88 ector_renderer_prepare());
89} 89}
90 90
91static void 91static Eo *
92_efl_vg_gradient_linear_eo_base_constructor(Eo *obj, 92_efl_vg_gradient_linear_eo_base_constructor(Eo *obj,
93 Efl_VG_Gradient_Linear_Data *pd) 93 Efl_VG_Gradient_Linear_Data *pd)
94{ 94{
95 Efl_VG_Base_Data *nd; 95 Efl_VG_Base_Data *nd;
96 96
97 eo_do_super(obj, MY_CLASS, eo_constructor()); 97 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
98 98
99 nd = eo_data_scope_get(obj, EFL_VG_BASE_CLASS); 99 nd = eo_data_scope_get(obj, EFL_VG_BASE_CLASS);
100 nd->render_pre = _efl_vg_gradient_linear_render_pre; 100 nd->render_pre = _efl_vg_gradient_linear_render_pre;
101 nd->data = pd; 101 nd->data = pd;
102
103 return obj;
102} 104}
103 105
104static void 106static void
diff --git a/src/lib/evas/canvas/evas_vg_gradient_radial.c b/src/lib/evas/canvas/evas_vg_gradient_radial.c
index e79f4fd..8af5e7d 100644
--- a/src/lib/evas/canvas/evas_vg_gradient_radial.c
+++ b/src/lib/evas/canvas/evas_vg_gradient_radial.c
@@ -105,16 +105,18 @@ _efl_vg_gradient_radial_render_pre(Eo *obj,
105 ector_renderer_prepare()); 105 ector_renderer_prepare());
106} 106}
107 107
108static void 108static Eo *
109_efl_vg_gradient_radial_eo_base_constructor(Eo *obj, Efl_VG_Gradient_Radial_Data *pd) 109_efl_vg_gradient_radial_eo_base_constructor(Eo *obj, Efl_VG_Gradient_Radial_Data *pd)
110{ 110{
111 Efl_VG_Base_Data *nd; 111 Efl_VG_Base_Data *nd;
112 112
113 eo_do_super(obj, MY_CLASS, eo_constructor()); 113 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
114 114
115 nd = eo_data_scope_get(obj, EFL_VG_BASE_CLASS); 115 nd = eo_data_scope_get(obj, EFL_VG_BASE_CLASS);
116 nd->render_pre = _efl_vg_gradient_radial_render_pre; 116 nd->render_pre = _efl_vg_gradient_radial_render_pre;
117 nd->data = pd; 117 nd->data = pd;
118
119 return obj;
118} 120}
119 121
120static void 122static void
diff --git a/src/lib/evas/canvas/evas_vg_node.c b/src/lib/evas/canvas/evas_vg_node.c
index 2d84b86..cfe5b40 100644
--- a/src/lib/evas/canvas/evas_vg_node.c
+++ b/src/lib/evas/canvas/evas_vg_node.c
@@ -238,20 +238,22 @@ _efl_vg_base_parent_checked_get(Eo *obj,
238 return EINA_FALSE; 238 return EINA_FALSE;
239} 239}
240 240
241static void 241static Eo *
242_efl_vg_base_eo_base_constructor(Eo *obj, 242_efl_vg_base_eo_base_constructor(Eo *obj,
243 Efl_VG_Base_Data *pd) 243 Efl_VG_Base_Data *pd)
244{ 244{
245 Efl_VG_Container_Data *cd = NULL; 245 Efl_VG_Container_Data *cd = NULL;
246 Eo *parent; 246 Eo *parent;
247 247
248 eo_do_super(obj, MY_CLASS, eo_constructor()); 248 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
249 249
250 if (!_efl_vg_base_parent_checked_get(obj, &parent, &cd)) 250 if (!_efl_vg_base_parent_checked_get(obj, &parent, &cd))
251 eo_error_set(obj); 251 eo_error_set(obj);
252 252
253 eo_do(obj, eo_event_callback_add(EFL_GFX_CHANGED, _efl_vg_base_property_changed, pd)); 253 eo_do(obj, eo_event_callback_add(EFL_GFX_CHANGED, _efl_vg_base_property_changed, pd));
254 pd->changed = EINA_TRUE; 254 pd->changed = EINA_TRUE;
255
256 return obj;
255} 257}
256 258
257static void 259static void
diff --git a/src/lib/evas/canvas/evas_vg_root_node.c b/src/lib/evas/canvas/evas_vg_root_node.c
index 65dbb02..1d9b573 100644
--- a/src/lib/evas/canvas/evas_vg_root_node.c
+++ b/src/lib/evas/canvas/evas_vg_root_node.c
@@ -65,7 +65,7 @@ _efl_vg_root_node_eo_base_parent_set(Eo *obj,
65 } 65 }
66} 66}
67 67
68static void 68static Eo *
69_efl_vg_root_node_eo_base_constructor(Eo *obj, 69_efl_vg_root_node_eo_base_constructor(Eo *obj,
70 Efl_VG_Root_Node_Data *pd) 70 Efl_VG_Root_Node_Data *pd)
71{ 71{
@@ -74,7 +74,7 @@ _efl_vg_root_node_eo_base_constructor(Eo *obj,
74 Eo *parent; 74 Eo *parent;
75 75
76 // Nice little hack, jump over parent constructor in Efl_VG_Root 76 // Nice little hack, jump over parent constructor in Efl_VG_Root
77 eo_do_super(obj, EFL_VG_BASE_CLASS, eo_constructor()); 77 obj = eo_do_super_ret(obj, EFL_VG_BASE_CLASS, obj, eo_constructor());
78 eo_do(obj, parent = eo_parent_get()); 78 eo_do(obj, parent = eo_parent_get());
79 if (!eo_isa(parent, EVAS_VG_CLASS)) 79 if (!eo_isa(parent, EVAS_VG_CLASS))
80 eo_error_set(obj); 80 eo_error_set(obj);
@@ -87,6 +87,8 @@ _efl_vg_root_node_eo_base_constructor(Eo *obj,
87 nd->data = cd; 87 nd->data = cd;
88 88
89 eo_do(obj, eo_event_callback_add(EFL_GFX_CHANGED, _evas_vg_root_node_changed, pd)); 89 eo_do(obj, eo_event_callback_add(EFL_GFX_CHANGED, _evas_vg_root_node_changed, pd));
90
91 return obj;
90} 92}
91 93
92#include "efl_vg_root_node.eo.c" 94#include "efl_vg_root_node.eo.c"
diff --git a/src/lib/evas/canvas/evas_vg_shape.c b/src/lib/evas/canvas/evas_vg_shape.c
index e67c3b5..d736718 100644
--- a/src/lib/evas/canvas/evas_vg_shape.c
+++ b/src/lib/evas/canvas/evas_vg_shape.c
@@ -316,12 +316,12 @@ _efl_vg_shape_render_pre(Eo *obj EINA_UNUSED,
316 ector_renderer_prepare()); 316 ector_renderer_prepare());
317} 317}
318 318
319static void 319static Eo *
320_efl_vg_shape_eo_base_constructor(Eo *obj, Efl_VG_Shape_Data *pd) 320_efl_vg_shape_eo_base_constructor(Eo *obj, Efl_VG_Shape_Data *pd)
321{ 321{
322 Efl_VG_Base_Data *nd; 322 Efl_VG_Base_Data *nd;
323 323
324 eo_do_super(obj, MY_CLASS, eo_constructor()); 324 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
325 325
326 pd->stroke.cap = EFL_GFX_CAP_BUTT; 326 pd->stroke.cap = EFL_GFX_CAP_BUTT;
327 pd->stroke.join = EFL_GFX_JOIN_MITER; 327 pd->stroke.join = EFL_GFX_JOIN_MITER;
@@ -331,6 +331,8 @@ _efl_vg_shape_eo_base_constructor(Eo *obj, Efl_VG_Shape_Data *pd)
331 nd = eo_data_scope_get(obj, EFL_VG_BASE_CLASS); 331 nd = eo_data_scope_get(obj, EFL_VG_BASE_CLASS);
332 nd->render_pre = _efl_vg_shape_render_pre; 332 nd->render_pre = _efl_vg_shape_render_pre;
333 nd->data = pd; 333 nd->data = pd;
334
335 return obj;
334} 336}
335 337
336static void 338static void
diff --git a/src/tests/eo/composite_objects/composite_objects_comp.c b/src/tests/eo/composite_objects/composite_objects_comp.c
index 21baed4..b933e19 100644
--- a/src/tests/eo/composite_objects/composite_objects_comp.c
+++ b/src/tests/eo/composite_objects/composite_objects_comp.c
@@ -21,11 +21,11 @@ _a_get(Eo *obj, void *class_data EINA_UNUSED)
21 return a; 21 return a;
22} 22}
23 23
24static void 24static Eo *
25_constructor(Eo *obj, void *class_data EINA_UNUSED) 25_constructor(Eo *obj, void *class_data EINA_UNUSED)
26{ 26{
27 Eina_Bool tmp; 27 Eina_Bool tmp;
28 eo_do_super(obj, MY_CLASS, eo_constructor()); 28 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
29 29
30 Eo *simple = eo_add(SIMPLE_CLASS, obj); 30 Eo *simple = eo_add(SIMPLE_CLASS, obj);
31 eo_do(obj, eo_composite_attach(simple)); 31 eo_do(obj, eo_composite_attach(simple));
@@ -35,6 +35,8 @@ _constructor(Eo *obj, void *class_data EINA_UNUSED)
35 fail_if(!eo_do_ret(simple, tmp, eo_composite_part_is())); 35 fail_if(!eo_do_ret(simple, tmp, eo_composite_part_is()));
36 36
37 eo_do(obj, eo_key_data_set("simple-obj", simple, NULL)); 37 eo_do(obj, eo_key_data_set("simple-obj", simple, NULL));
38
39 return obj;
38} 40}
39 41
40static Eo_Op_Description op_descs[] = { 42static Eo_Op_Description op_descs[] = {
diff --git a/src/tests/eo/constructors/constructors_mixin.c b/src/tests/eo/constructors/constructors_mixin.c
index ca7343f..3c21129 100644
--- a/src/tests/eo/constructors/constructors_mixin.c
+++ b/src/tests/eo/constructors/constructors_mixin.c
@@ -18,12 +18,12 @@ _add_and_print_set(Eo *obj, void *class_data EINA_UNUSED, int x)
18 18
19extern int my_init_count; 19extern int my_init_count;
20 20
21static void 21static Eo *
22_constructor(Eo *obj, void *class_data EINA_UNUSED) 22_constructor(Eo *obj, void *class_data EINA_UNUSED)
23{ 23{
24 eo_do_super(obj, MY_CLASS, eo_constructor());
25
26 my_init_count++; 24 my_init_count++;
25
26 return eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
27} 27}
28 28
29static void 29static void
diff --git a/src/tests/eo/constructors/constructors_simple.c b/src/tests/eo/constructors/constructors_simple.c
index 5e9b60f..ed22905 100644
--- a/src/tests/eo/constructors/constructors_simple.c
+++ b/src/tests/eo/constructors/constructors_simple.c
@@ -39,12 +39,12 @@ _GET_SET_FUNC(b)
39 39
40extern int my_init_count; 40extern int my_init_count;
41 41
42static void 42static Eo *
43_constructor(Eo *obj, void *class_data EINA_UNUSED) 43_constructor(Eo *obj, void *class_data EINA_UNUSED)
44{ 44{
45 eo_do_super(obj, MY_CLASS, eo_constructor());
46
47 my_init_count++; 45 my_init_count++;
46
47 return eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
48} 48}
49 49
50static Eo* 50static Eo*
diff --git a/src/tests/eo/constructors/constructors_simple2.c b/src/tests/eo/constructors/constructors_simple2.c
index 0318a9f..b1b6bbe 100644
--- a/src/tests/eo/constructors/constructors_simple2.c
+++ b/src/tests/eo/constructors/constructors_simple2.c
@@ -8,12 +8,13 @@
8 8
9#define MY_CLASS SIMPLE2_CLASS 9#define MY_CLASS SIMPLE2_CLASS
10 10
11static void 11static Eo *
12_constructor(Eo *obj, void *class_data EINA_UNUSED) 12_constructor(Eo *obj, void *class_data EINA_UNUSED)
13{ 13{
14 eo_do_super(obj, MY_CLASS, eo_constructor()); 14 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
15 15
16 eo_error_set(obj); 16 eo_error_set(obj);
17 return obj;
17} 18}
18 19
19static Eo_Op_Description op_descs[] = { 20static Eo_Op_Description op_descs[] = {
diff --git a/src/tests/eo/constructors/constructors_simple3.c b/src/tests/eo/constructors/constructors_simple3.c
index 9c720b5..16d3fc8 100644
--- a/src/tests/eo/constructors/constructors_simple3.c
+++ b/src/tests/eo/constructors/constructors_simple3.c
@@ -8,10 +8,10 @@
8 8
9#define MY_CLASS SIMPLE3_CLASS 9#define MY_CLASS SIMPLE3_CLASS
10 10
11static void 11static Eo *
12_constructor(Eo *obj, void *class_data EINA_UNUSED, va_list *list EINA_UNUSED) 12_constructor(Eo *obj, void *class_data EINA_UNUSED, va_list *list EINA_UNUSED)
13{ 13{
14 (void) obj; 14 return obj;
15} 15}
16 16
17static Eo_Op_Description op_descs[] = { 17static Eo_Op_Description op_descs[] = {
diff --git a/src/tests/eo/constructors/constructors_simple7.c b/src/tests/eo/constructors/constructors_simple7.c
index cd02989..79dce35 100644
--- a/src/tests/eo/constructors/constructors_simple7.c
+++ b/src/tests/eo/constructors/constructors_simple7.c
@@ -11,11 +11,11 @@
11 11
12#define MY_CLASS SIMPLE7_CLASS 12#define MY_CLASS SIMPLE7_CLASS
13 13
14static void 14static Eo *
15_constructor(Eo *obj, void *class_data EINA_UNUSED, va_list *list EINA_UNUSED) 15_constructor(Eo *obj, void *class_data EINA_UNUSED, va_list *list EINA_UNUSED)
16{ 16{
17 /* FIXME: Actually test it. */ 17 /* FIXME: Actually test it. */
18 eo_do_super(obj, MY_CLASS, eo_constructor()); 18 return eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
19} 19}
20 20
21static Eo_Op_Description op_descs [] = { 21static Eo_Op_Description op_descs [] = {
diff --git a/src/tests/eo/mixin/mixin_mixin.c b/src/tests/eo/mixin/mixin_mixin.c
index d91a04f..f5c2334 100644
--- a/src/tests/eo/mixin/mixin_mixin.c
+++ b/src/tests/eo/mixin/mixin_mixin.c
@@ -17,10 +17,10 @@ _ab_sum_get(Eo *obj, void *class_data EINA_UNUSED)
17 return a + b; 17 return a + b;
18} 18}
19 19
20static void 20static Eo *
21_constructor(Eo *obj, void *class_data EINA_UNUSED) 21_constructor(Eo *obj, void *class_data EINA_UNUSED)
22{ 22{
23 eo_do_super(obj, MY_CLASS, eo_constructor()); 23 return eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
24} 24}
25 25
26static void 26static void
diff --git a/src/tests/eo/mixin/mixin_mixin2.c b/src/tests/eo/mixin/mixin_mixin2.c
index 6df0a85..60f3d40 100644
--- a/src/tests/eo/mixin/mixin_mixin2.c
+++ b/src/tests/eo/mixin/mixin_mixin2.c
@@ -32,10 +32,11 @@ _ab_sum_get(Eo *obj, void *class_data)
32 return sum; 32 return sum;
33} 33}
34 34
35static void 35static Eo *
36_constructor(Eo *obj, void *class_data EINA_UNUSED, va_list *list EINA_UNUSED) 36_constructor(Eo *obj, void *class_data EINA_UNUSED, va_list *list EINA_UNUSED)
37{ 37{
38 eo_do_super(obj, MY_CLASS, eo_constructor()); 38 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
39 return obj;
39} 40}
40 41
41static void 42static void
diff --git a/src/tests/eo/mixin/mixin_mixin3.c b/src/tests/eo/mixin/mixin_mixin3.c
index 6d0d99d..cd2d732 100644
--- a/src/tests/eo/mixin/mixin_mixin3.c
+++ b/src/tests/eo/mixin/mixin_mixin3.c
@@ -32,10 +32,10 @@ _ab_sum_get(Eo *obj, void *class_data EINA_UNUSED)
32 return sum; 32 return sum;
33} 33}
34 34
35static void 35static Eo *
36_constructor(Eo *obj, void *class_data EINA_UNUSED, va_list *list EINA_UNUSED) 36_constructor(Eo *obj, void *class_data EINA_UNUSED, va_list *list EINA_UNUSED)
37{ 37{
38 eo_do_super(obj, MY_CLASS, eo_constructor()); 38 return eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
39} 39}
40 40
41static void 41static void
diff --git a/src/tests/eo/signals/signals_simple.c b/src/tests/eo/signals/signals_simple.c
index a928cec..f113e51 100644
--- a/src/tests/eo/signals/signals_simple.c
+++ b/src/tests/eo/signals/signals_simple.c
@@ -60,15 +60,17 @@ _cb_deled(void *data, Eo *obj, const Eo_Event_Description *desc, void *event_inf
60 return EO_CALLBACK_CONTINUE; 60 return EO_CALLBACK_CONTINUE;
61} 61}
62 62
63static void 63static Eo *
64_constructor(Eo *obj, void *class_data EINA_UNUSED) 64_constructor(Eo *obj, void *class_data EINA_UNUSED)
65{ 65{
66 eo_do_super(obj, MY_CLASS, eo_constructor()); 66 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
67 67
68 eo_do(obj, eo_event_callback_add(EO_EV_CALLBACK_ADD, _cb_added, NULL)); 68 eo_do(obj, eo_event_callback_add(EO_EV_CALLBACK_ADD, _cb_added, NULL));
69 eo_do(obj, eo_event_callback_add(EO_EV_CALLBACK_DEL, _cb_deled, NULL)); 69 eo_do(obj, eo_event_callback_add(EO_EV_CALLBACK_DEL, _cb_deled, NULL));
70 70
71 eo_do(obj, eo_key_data_set("cb_count", (intptr_t) 0, NULL)); 71 eo_do(obj, eo_key_data_set("cb_count", (intptr_t) 0, NULL));
72
73 return obj;
72} 74}
73 75
74EAPI EO_VOID_FUNC_BODYV(simple_a_set, EO_FUNC_CALL(a), int a); 76EAPI EO_VOID_FUNC_BODYV(simple_a_set, EO_FUNC_CALL(a), int a);
diff --git a/src/tests/eo/suite/eo_test_general.c b/src/tests/eo/suite/eo_test_general.c
index 037567d..bb4f4ed 100644
--- a/src/tests/eo/suite/eo_test_general.c
+++ b/src/tests/eo/suite/eo_test_general.c
@@ -296,12 +296,12 @@ static Eina_Bool _man_should_con = EINA_TRUE;
296static Eina_Bool _man_should_des = EINA_TRUE; 296static Eina_Bool _man_should_des = EINA_TRUE;
297static const Eo_Class *cur_klass = NULL; 297static const Eo_Class *cur_klass = NULL;
298 298
299static void 299static Eo *
300_man_con(Eo *obj, void *data EINA_UNUSED, va_list *list EINA_UNUSED) 300_man_con(Eo *obj, void *data EINA_UNUSED, va_list *list EINA_UNUSED)
301{ 301{
302 if (_man_should_con) 302 if (_man_should_con)
303 eo_manual_free_set(obj, EINA_TRUE); 303 eo_manual_free_set(obj, EINA_TRUE);
304 eo_do_super(obj, cur_klass, eo_constructor()); 304 return eo_do_super_ret(obj, cur_klass, obj, eo_constructor());
305} 305}
306 306
307static void 307static void
diff --git a/src/tests/eo/suite/eo_test_threaded_calls.c b/src/tests/eo/suite/eo_test_threaded_calls.c
index 33520f2..21b6015 100644
--- a/src/tests/eo/suite/eo_test_threaded_calls.c
+++ b/src/tests/eo/suite/eo_test_threaded_calls.c
@@ -49,12 +49,14 @@ _try_swap_stack(Eo *obj EINA_UNUSED, void *class_data)
49 } 49 }
50} 50}
51 51
52static void 52static Eo *
53_constructor(Eo *obj EINA_UNUSED, void *class_data EINA_UNUSED, int v) 53_constructor(Eo *obj, void *class_data EINA_UNUSED, int v)
54{ 54{
55 Thread_Test_Public_Data *pd = class_data; 55 Thread_Test_Public_Data *pd = class_data;
56 56
57 pd->v = v; 57 pd->v = v;
58
59 return obj;
58} 60}
59 61
60static Eo_Op_Description op_descs[] = { 62static Eo_Op_Description op_descs[] = {
diff --git a/src/tests/eolian_cxx/a.c b/src/tests/eolian_cxx/a.c
index f8edfad..885c9ea 100644
--- a/src/tests/eolian_cxx/a.c
+++ b/src/tests/eolian_cxx/a.c
@@ -15,9 +15,9 @@ typedef struct _A_Data A_Data;
15 15
16#define MY_CLASS A_CLASS 16#define MY_CLASS A_CLASS
17 17
18static void _a_eo_base_constructor(Eo *obj EINA_UNUSED, A_Data *pd EINA_UNUSED) 18static Eo *_a_eo_base_constructor(Eo *obj EINA_UNUSED, A_Data *pd EINA_UNUSED)
19{ 19{
20 eo_do_super(obj, MY_CLASS, eo_constructor()); 20 return eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
21} 21}
22 22
23#include "a.eo.c" 23#include "a.eo.c"
diff --git a/src/tests/eolian_cxx/b.c b/src/tests/eolian_cxx/b.c
index 7b7ce50..f32617b 100644
--- a/src/tests/eolian_cxx/b.c
+++ b/src/tests/eolian_cxx/b.c
@@ -16,9 +16,9 @@ typedef struct _B_Data B_Data;
16 16
17#define MY_CLASS B_CLASS 17#define MY_CLASS B_CLASS
18 18
19static void _b_eo_base_constructor(Eo *obj EINA_UNUSED, B_Data *pd EINA_UNUSED) 19static Eo *_b_eo_base_constructor(Eo *obj EINA_UNUSED, B_Data *pd EINA_UNUSED)
20{ 20{
21 eo_do_super(obj, MY_CLASS, eo_constructor()); 21 return eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
22} 22}
23 23
24#include "b.eo.c" 24#include "b.eo.c"
diff --git a/src/tests/eolian_cxx/c.c b/src/tests/eolian_cxx/c.c
index be8ad2c..f113c8f 100644
--- a/src/tests/eolian_cxx/c.c
+++ b/src/tests/eolian_cxx/c.c
@@ -16,9 +16,9 @@ typedef struct _C_Data C_Data;
16 16
17#define MY_CLASS C_CLASS 17#define MY_CLASS C_CLASS
18 18
19static void _c_eo_base_constructor(Eo *obj EINA_UNUSED, C_Data *pd EINA_UNUSED) 19static Eo *_c_eo_base_constructor(Eo *obj EINA_UNUSED, C_Data *pd EINA_UNUSED)
20{ 20{
21 eo_do_super(obj, MY_CLASS, eo_constructor()); 21 return eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
22} 22}
23 23
24#include "c.eo.c" 24#include "c.eo.c"
diff --git a/src/tests/eolian_cxx/callback.c b/src/tests/eolian_cxx/callback.c
index ef978fb..6261254 100644
--- a/src/tests/eolian_cxx/callback.c
+++ b/src/tests/eolian_cxx/callback.c
@@ -28,13 +28,15 @@ static Eina_Bool _callback_callback_added(void* data EINA_UNUSED, Eo* obj EINA_U
28 return EINA_TRUE; 28 return EINA_TRUE;
29} 29}
30 30
31static void _callback_eo_base_constructor(Eo *obj EINA_UNUSED, Callback_Data *pd EINA_UNUSED) 31static Eo *_callback_eo_base_constructor(Eo *obj, Callback_Data *pd EINA_UNUSED)
32{ 32{
33 pd->callbacks = 0; 33 pd->callbacks = 0;
34 eo_do_super(obj, MY_CLASS, eo_constructor()); 34 obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
35 35
36 eo_event_callback_priority_add(EO_BASE_EVENT_CALLBACK_ADD, EO_CALLBACK_PRIORITY_DEFAULT 36 eo_event_callback_priority_add(EO_BASE_EVENT_CALLBACK_ADD, EO_CALLBACK_PRIORITY_DEFAULT
37 , &_callback_callback_added, pd); 37 , &_callback_callback_added, pd);
38
39 return obj;
38} 40}
39 41
40static void _callback_onecallback(Eo *obj EINA_UNUSED, Callback_Data *pd EINA_UNUSED, Ecore_Cb cb, void *data) 42static void _callback_onecallback(Eo *obj EINA_UNUSED, Callback_Data *pd EINA_UNUSED, Ecore_Cb cb, void *data)
diff --git a/src/tests/eolian_cxx/d.c b/src/tests/eolian_cxx/d.c
index ef08f81..8ef24d6 100644
--- a/src/tests/eolian_cxx/d.c
+++ b/src/tests/eolian_cxx/d.c
@@ -18,9 +18,9 @@ typedef struct _D_Data D_Data;
18 18
19#define MY_CLASS D_CLASS 19#define MY_CLASS D_CLASS
20 20
21static void _d_eo_base_constructor(Eo *obj EINA_UNUSED, D_Data *pd EINA_UNUSED) 21static Eo *_d_eo_base_constructor(Eo *obj EINA_UNUSED, D_Data *pd EINA_UNUSED)
22{ 22{
23 eo_do_super(obj, MY_CLASS, eo_constructor()); 23 return eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
24} 24}
25 25
26#include "d.eo.c" 26#include "d.eo.c"
diff --git a/src/tests/eolian_cxx/simple.c b/src/tests/eolian_cxx/simple.c
index c78073c..1009b37 100644
--- a/src/tests/eolian_cxx/simple.c
+++ b/src/tests/eolian_cxx/simple.c
@@ -12,9 +12,9 @@
12 12
13#define MY_CLASS SIMPLE_CLASS 13#define MY_CLASS SIMPLE_CLASS
14 14
15static void _simple_eo_base_constructor(Eo *obj, void *pd EINA_UNUSED) 15static Eo *_simple_eo_base_constructor(Eo *obj, void *pd EINA_UNUSED)
16{ 16{
17 eo_do_super(obj, MY_CLASS, eo_constructor()); 17 return eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
18} 18}
19 19
20static Eina_Bool _simple_simple_get(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED) 20static Eina_Bool _simple_simple_get(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED)