cedric pushed a commit to branch master.

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

commit ccb5642eb9c122deac271da5f8b1353f46d73160
Author: Cedric BAIL <[email protected]>
Date:   Wed Apr 11 10:38:21 2018 -0700

    Revert "efl_add_ref - fis to use efl_add properly with a parent."
    
    This reverts commit 2fb5cc3ad09f6aaf82b5d1131ac5ed22ed848bd4.
    
    Most of this change where wrong as they didn't affect the destruction
    of the object. efl_add_ref allow for manual handling of the lifecycle
    of the object and make sure it is still alive during destructor. efl_add
    will not allow you to access an object after invalidate also efl.parent.get
    will always return NULL once the object is invalidated.
    
    Differential Revision: https://phab.enlightenment.org/D6062
---
 src/bin/elementary/test_bg.c                       |   4 +-
 src/bin/elementary/test_box.c                      |   2 +-
 src/bin/elementary/test_calendar.c                 |   2 +-
 src/bin/elementary/test_efl_gfx_map.c              |   2 +-
 src/bin/elementary/test_evas_map.c                 |   2 +-
 src/bin/elementary/test_evas_mask.c                |   2 +-
 src/bin/elementary/test_evas_snapshot.c            |   2 +-
 src/bin/elementary/test_gfx_filters.c              |   2 +-
 src/bin/elementary/test_glview.c                   |   2 +-
 src/bin/elementary/test_nstate.c                   |   2 +-
 src/bin/elementary/test_part_bg.c                  |   2 +-
 src/bin/elementary/test_part_shadow.c              |   4 +-
 src/bin/elementary/test_photocam.c                 |   2 +-
 src/bin/elementary/test_ui_button.c                |   2 +-
 src/bin/elementary/test_ui_clock.c                 |   2 +-
 src/bin/elementary/test_ui_panes.c                 |   2 +-
 src/bin/elementary/test_ui_popup.c                 |  16 +--
 src/bin/elementary/test_ui_progressbar.c           |   4 +-
 src/bin/elementary/test_ui_scroller.c              |   2 +-
 src/bin/elementary/test_ui_slider.c                |   2 +-
 src/bin/elementary/test_ui_slider_interval.c       |   2 +-
 src/bin/elementary/test_ui_spin.c                  |   2 +-
 src/bin/elementary/test_ui_spin_button.c           |   2 +-
 src/bin/elementary/test_ui_table_static.c          |   2 +-
 src/bin/elementary/test_win_dialog.c               |   2 +-
 src/bin/elementary/test_win_indicator.c            |   4 +-
 src/bin/elementary/test_win_stack.c                |   4 +-
 src/examples/ecore/ecore_audio_custom.c            |   4 +-
 src/examples/ecore/ecore_audio_playback.c          |   8 +-
 src/examples/ecore/ecore_audio_to_ogg.c            |  18 +--
 src/examples/ecore/ecore_idler_example.c           |   2 +-
 src/examples/ecore/ecore_poller_example.c          |  12 +-
 src/examples/ecore/efl_io_copier_example.c         |  12 +-
 src/examples/ecore/efl_io_queue_example.c          |   8 +-
 src/examples/ecore/efl_net_server_example.c        |   6 +-
 src/examples/ecore/efl_net_server_simple_example.c |   2 +-
 .../ecore/efl_net_socket_ssl_dialer_example.c      |   6 +-
 .../ecore/efl_net_socket_ssl_server_example.c      |   6 +-
 src/examples/eio/eio_sentry.c                      |   2 +-
 src/examples/elementary/efl_ui_scroller_example.c  |   4 +-
 .../elementary/efl_ui_view_list_example_1.c        |   2 +-
 .../elementary/efl_ui_view_list_example_2.c        |   2 +-
 .../elementary/efl_ui_view_list_example_3.c        |   2 +-
 src/examples/elementary/filemvc.c                  |   9 +-
 src/examples/elementary/fileviewlist.c             |   4 +-
 src/examples/elementary/layout_model_connect.c     |   4 +-
 src/lib/ecore_con/efl_net_ip_address.c             |   6 +-
 src/lib/ecore_con/efl_net_ssl_context.c            |   2 +-
 src/lib/ecore_evas/ecore_evas.c                    |  12 +-
 src/lib/edje/edje_main.c                           |  10 +-
 src/lib/edje/edje_multisense.c                     |  24 ++--
 src/lib/elementary/efl_ui_view_list.c              |   2 +-
 src/lib/elementary/elc_fileselector_button.c       |   2 +-
 src/lib/elementary/elm_atspi_bridge.c              |   4 +-
 src/lib/elementary/elm_sys_notify.c                |   2 +-
 src/tests/ecore/ecore_test_ecore_audio.c           |  61 +++++-----
 src/tests/ecore/efl_app_test_promise.c             |   4 +-
 .../ecore_con/ecore_con_test_efl_net_ip_address.c  |  46 ++++----
 src/tests/efl/efl_test_model_composite.c           |   8 +-
 src/tests/efl/efl_test_model_container.c           |   2 +-
 src/tests/efl_mono/libefl_mono_native_test.c       |   2 +-
 src/tests/eio/eio_test_sentry.c                    |  40 +++----
 src/tests/elementary/elm_test_atspi.c              |  28 ++---
 src/tests/elementary/elm_test_config.c             |   4 +-
 src/tests/elementary/elm_test_focus.c              | 128 ++++++++++-----------
 src/tests/elementary/elm_test_focus_common.c       |   4 +-
 src/tests/elementary/elm_test_focus_sub.c          |  38 +++---
 67 files changed, 308 insertions(+), 312 deletions(-)

diff --git a/src/bin/elementary/test_bg.c b/src/bin/elementary/test_bg.c
index be0f553938..59d18821d0 100644
--- a/src/bin/elementary/test_bg.c
+++ b/src/bin/elementary/test_bg.c
@@ -330,7 +330,7 @@ test_bg_window(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *event
    Evas_Object *win, *box, *cs;
    char buf[PATH_MAX];
 
-   win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+   win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                  efl_text_set(efl_added, "Bg EOAPI (Efl.Ui.Win)"),
                  efl_ui_win_autodel_set(efl_added, EINA_TRUE),
                  efl_ui_win_alpha_set(efl_added, 1));
@@ -403,7 +403,7 @@ test_bg_scale_type(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *e
    Evas_Object *rd, *rdg;
    char buf[PATH_MAX];
 
-   win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+   win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                  efl_text_set(efl_added, "Bg EOAPI (Efl.Ui.Bg)"),
                  efl_ui_win_autodel_set(efl_added, EINA_TRUE),
                  efl_ui_win_alpha_set(efl_added, EINA_FALSE));
diff --git a/src/bin/elementary/test_box.c b/src/bin/elementary/test_box.c
index ef195b6b8d..f50dcb339f 100644
--- a/src/bin/elementary/test_box.c
+++ b/src/bin/elementary/test_box.c
@@ -889,7 +889,7 @@ test_box_stack(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED,
    Evas_Object *win, *bx, *o;
    char buf[PATH_MAX];
 
-   win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+   win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                  efl_text_set(efl_added, "Efl.Ui.Box_Stack"),
                  efl_ui_win_autodel_set(efl_added, EINA_TRUE));
 
diff --git a/src/bin/elementary/test_calendar.c 
b/src/bin/elementary/test_calendar.c
index aeb31f9951..ba37407c0f 100644
--- a/src/bin/elementary/test_calendar.c
+++ b/src/bin/elementary/test_calendar.c
@@ -431,7 +431,7 @@ test_efl_ui_calendar(void *data EINA_UNUSED, Evas_Object 
*obj EINA_UNUSED, void
    current_date = time(NULL) + SEC_PER_YEAR;
    localtime_r(&current_date, &max_date);
 
-   win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+   win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                  efl_text_set(efl_added, "Efl Ui Calendar"),
                  efl_ui_win_autodel_set(efl_added, EINA_TRUE));
 
diff --git a/src/bin/elementary/test_efl_gfx_map.c 
b/src/bin/elementary/test_efl_gfx_map.c
index 3c6e301857..72d7db139d 100644
--- a/src/bin/elementary/test_efl_gfx_map.c
+++ b/src/bin/elementary/test_efl_gfx_map.c
@@ -45,7 +45,7 @@ test_efl_gfx_map(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED,
    Evas_Object *win, *img;
    char buf[PATH_MAX];
 
-   win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+   win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                  efl_text_set(efl_added, "Efl Gfx Map"),
                  efl_ui_win_autodel_set(efl_added, EINA_TRUE));
 
diff --git a/src/bin/elementary/test_evas_map.c 
b/src/bin/elementary/test_evas_map.c
index 3dc641135a..7e25aafba7 100644
--- a/src/bin/elementary/test_evas_map.c
+++ b/src/bin/elementary/test_evas_map.c
@@ -53,7 +53,7 @@ test_evas_map(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED,
    Evas_Object *win, *img;
    char buf[PATH_MAX];
 
-   win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+   win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                  efl_text_set(efl_added, "Evas Map"),
                  efl_ui_win_autodel_set(efl_added, EINA_TRUE));
 
diff --git a/src/bin/elementary/test_evas_mask.c 
b/src/bin/elementary/test_evas_mask.c
index 6a4bbcf975..e322f7ba65 100644
--- a/src/bin/elementary/test_evas_mask.c
+++ b/src/bin/elementary/test_evas_mask.c
@@ -108,7 +108,7 @@ test_evas_mask(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *event
    Elm_Genlist_Item_Class *itc;
    char buf[PATH_MAX];
 
-   win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+   win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                  efl_text_set(efl_added, "Evas masking demo"),
                  efl_ui_win_autodel_set(efl_added, 1));
 
diff --git a/src/bin/elementary/test_evas_snapshot.c 
b/src/bin/elementary/test_evas_snapshot.c
index 411da14860..e288278a4a 100644
--- a/src/bin/elementary/test_evas_snapshot.c
+++ b/src/bin/elementary/test_evas_snapshot.c
@@ -118,7 +118,7 @@ test_evas_snapshot(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *e
    Eo *win, *table, *o, *snap, *box;
    const char *path;
 
-   win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+   win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                  efl_text_set(efl_added, "Evas Snapshot"),
                  efl_ui_win_autodel_set(efl_added, 1));
 
diff --git a/src/bin/elementary/test_gfx_filters.c 
b/src/bin/elementary/test_gfx_filters.c
index da68bb63d0..72b0ba343e 100644
--- a/src/bin/elementary/test_gfx_filters.c
+++ b/src/bin/elementary/test_gfx_filters.c
@@ -333,7 +333,7 @@ test_gfx_filters(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *eve
 {
    Eo *win, *box, *box2, *o, *text = NULL, *spinner, *code, *split, *flip, *tb;
 
-   win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+   win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                  efl_text_set(efl_added, "Gfx Filter Editor"),
                  efl_ui_win_autodel_set(efl_added, 1));
 
diff --git a/src/bin/elementary/test_glview.c b/src/bin/elementary/test_glview.c
index 2a69dae495..6a133e9fd0 100644
--- a/src/bin/elementary/test_glview.c
+++ b/src/bin/elementary/test_glview.c
@@ -644,7 +644,7 @@ _test_glview_do(Evas_GL_Context_Version version)
    elm_config_accel_preference_set(accel);
    eina_stringshare_del(accel);
 #else
-   win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+   win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                 efl_ui_win_name_set(efl_added, "glview"),
                 efl_text_set(efl_added, "GLView"),
                 efl_ui_win_accel_preference_set(efl_added, "gl:depth"));
diff --git a/src/bin/elementary/test_nstate.c b/src/bin/elementary/test_nstate.c
index 54924e78c0..4da3b21ac9 100644
--- a/src/bin/elementary/test_nstate.c
+++ b/src/bin/elementary/test_nstate.c
@@ -15,7 +15,7 @@ test_nstate(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *event_in
 {
    Evas_Object *win, *bx, *nstate;
 
-   win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+   win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                  efl_text_set(efl_added, "N-state widget"),
                  elm_win_autodel_set(efl_added, EINA_TRUE));
 
diff --git a/src/bin/elementary/test_part_bg.c 
b/src/bin/elementary/test_part_bg.c
index ac4b2941bc..111af88de1 100644
--- a/src/bin/elementary/test_part_bg.c
+++ b/src/bin/elementary/test_part_bg.c
@@ -142,7 +142,7 @@ test_part_background(void *data EINA_UNUSED, Evas_Object 
*obj EINA_UNUSED, void
    content_class[16] = EFL_UI_SPIN_CLASS;
    content_class[17] = EFL_UI_SPIN_BUTTON_CLASS;
 
-   win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+   win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                  efl_text_set(efl_added, "Widget Part Background"),
                  efl_ui_win_autodel_set(efl_added, EINA_TRUE));
 
diff --git a/src/bin/elementary/test_part_shadow.c 
b/src/bin/elementary/test_part_shadow.c
index 4db24ecc6d..2df5f6766b 100644
--- a/src/bin/elementary/test_part_shadow.c
+++ b/src/bin/elementary/test_part_shadow.c
@@ -71,7 +71,7 @@ _delete_cb(void *data, const Efl_Event *ev)
    Test_Data *td = data;
 
    pulse_stop(td, NULL);
-   efl_del(ev->object);
+   efl_unref(ev->object);
    free(td);
 }
 
@@ -85,7 +85,7 @@ test_part_shadow(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *eve
 
    td = calloc(1, sizeof(*td));
 
-   win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+   win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                  efl_ui_win_name_set(efl_added, "shadow"),
                  efl_text_set(efl_added, "Shadow effects"));
    efl_event_callback_add(win, EFL_UI_WIN_EVENT_DELETE_REQUEST, _delete_cb, 
td);
diff --git a/src/bin/elementary/test_photocam.c 
b/src/bin/elementary/test_photocam.c
index f89d64bd57..f6c2e9711b 100644
--- a/src/bin/elementary/test_photocam.c
+++ b/src/bin/elementary/test_photocam.c
@@ -804,7 +804,7 @@ test_image_zoomable_animated(void *data EINA_UNUSED, 
Evas_Object *obj EINA_UNUSE
    Eo *win, *bx, *zoomable, *rect;
    char buf[PATH_MAX];
 
-   win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+   win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                  efl_ui_win_type_set(efl_added, EFL_UI_WIN_BASIC),
                  efl_text_set(efl_added, "Efl.Ui.Image_Zoomable animation"),
                  efl_ui_win_autodel_set(efl_added, EINA_TRUE));
diff --git a/src/bin/elementary/test_ui_button.c 
b/src/bin/elementary/test_ui_button.c
index 6519dadd65..f5aa340ad6 100644
--- a/src/bin/elementary/test_ui_button.c
+++ b/src/bin/elementary/test_ui_button.c
@@ -27,7 +27,7 @@ test_ui_button(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *event
    Eo *win, *bx, *btn;
    char buf[PATH_MAX];
 
-   win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+   win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                  efl_ui_win_type_set(efl_added, EFL_UI_WIN_BASIC),
                  efl_text_set(efl_added, "Efl.Ui.Button"),
                  efl_ui_win_autodel_set(efl_added, EINA_TRUE)
diff --git a/src/bin/elementary/test_ui_clock.c 
b/src/bin/elementary/test_ui_clock.c
index 4a60345621..2e667b5026 100644
--- a/src/bin/elementary/test_ui_clock.c
+++ b/src/bin/elementary/test_ui_clock.c
@@ -47,7 +47,7 @@ test_ui_clock(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *event_
 {
    Evas_Object *win, *bx;
 
-   win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+   win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                  efl_ui_win_type_set(efl_added, EFL_UI_WIN_BASIC),
                  efl_text_set(efl_added, "Efl.Ui.Clock"),
                  efl_ui_win_autodel_set(efl_added, EINA_TRUE));
diff --git a/src/bin/elementary/test_ui_panes.c 
b/src/bin/elementary/test_ui_panes.c
index 89692aab00..4e6d3373e0 100644
--- a/src/bin/elementary/test_ui_panes.c
+++ b/src/bin/elementary/test_ui_panes.c
@@ -8,7 +8,7 @@ test_panes_minsize(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *e
 {
    Eo *win, *panes, *panes_h;
 
-   win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+   win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                  efl_ui_win_type_set(efl_added, EFL_UI_WIN_BASIC),
                  efl_text_set(efl_added, "Efl.Ui.Panes"),
                  efl_ui_win_autodel_set(efl_added, EINA_TRUE)
diff --git a/src/bin/elementary/test_ui_popup.c 
b/src/bin/elementary/test_ui_popup.c
index 4667924a12..3c8ae67239 100644
--- a/src/bin/elementary/test_ui_popup.c
+++ b/src/bin/elementary/test_ui_popup.c
@@ -213,7 +213,7 @@ static void
 _win_del(void *data, const Efl_Event *ev EINA_UNUSED)
 {
    efl_ui_popup_data *p_data = data;
-   efl_del(p_data->panel_win);
+   efl_unref(p_data->panel_win);
    free(p_data);
    printf("window is deleted\n");
 }
@@ -222,7 +222,7 @@ static void
 _panel_win_del(void *data, const Efl_Event *ev EINA_UNUSED)
 {
    efl_ui_popup_data *p_data = data;
-   efl_del(p_data->win);
+   efl_unref(p_data->win);
    free(p_data);
    printf("window is deleted\n");
 }
@@ -232,14 +232,14 @@ test_ui_popup(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *event_
 {
    efl_ui_popup_data *p_data = (efl_ui_popup_data*)calloc(1, 
sizeof(efl_ui_popup_data));
 
-   Eo *win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+   Eo *win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                      efl_text_set(efl_added, "Efl.Ui.Popup"),
                      efl_ui_win_autodel_set(efl_added, EINA_TRUE));
    efl_event_callback_add(win, EFL_UI_WIN_EVENT_DELETE_REQUEST, _win_del, 
p_data);
 
    efl_gfx_entity_size_set(win, EINA_SIZE2D(500, 500));
 
-   Eo *panel_win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+   Eo *panel_win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                            efl_text_set(efl_added, "Efl.Ui.Popup Panel"),
                            efl_ui_win_autodel_set(efl_added, EINA_TRUE));
    efl_event_callback_add(panel_win, EFL_UI_WIN_EVENT_DELETE_REQUEST, 
_panel_win_del, p_data);
@@ -351,7 +351,7 @@ test_ui_popup_alert(void *data EINA_UNUSED, Evas_Object 
*obj EINA_UNUSED, void *
 {
    char buf[PATH_MAX];
 
-   Eo *win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+   Eo *win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                      efl_text_set(efl_added, "Efl.Ui.Popup.Alert"),
                      efl_ui_win_autodel_set(efl_added, EINA_TRUE));
 
@@ -506,7 +506,7 @@ _alert_scroll_case5_cb(void *data, const Efl_Event *ev 
EINA_UNUSED)
 void
 test_ui_popup_alert_scroll(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *event_info EINA_UNUSED)
 {
-   Eo *win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+   Eo *win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                      efl_text_set(efl_added, "Efl.Ui.Popup.Alert.Scroll"),
                      efl_ui_win_autodel_set(efl_added, EINA_TRUE));
 
@@ -889,7 +889,7 @@ _alert_text_case14_cb(void *data, const Efl_Event *ev 
EINA_UNUSED)
 void
 test_ui_popup_alert_text(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, 
void *event_info EINA_UNUSED)
 {
-   Eo *win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+   Eo *win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                      efl_text_set(efl_added, "Efl.Ui.Popup.Alert.Text"),
                      efl_ui_win_autodel_set(efl_added, EINA_TRUE));
 
@@ -999,7 +999,7 @@ test_ui_popup_anchor(void *data EINA_UNUSED, Evas_Object 
*obj EINA_UNUSED, void
 
    char buf[PATH_MAX];
 
-   Eo *win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+   Eo *win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                      efl_text_set(efl_added, "Efl.Ui.Popup.Anchor"),
                      efl_ui_win_autodel_set(efl_added, EINA_TRUE));
    efl_event_callback_add(win, EFL_UI_WIN_EVENT_DELETE_REQUEST, _win_del, 
p_data);
diff --git a/src/bin/elementary/test_ui_progressbar.c 
b/src/bin/elementary/test_ui_progressbar.c
index ac00c722a3..09a0e704c0 100644
--- a/src/bin/elementary/test_ui_progressbar.c
+++ b/src/bin/elementary/test_ui_progressbar.c
@@ -104,7 +104,7 @@ _win_delete_req_cb(void *d, const Efl_Event *ev EINA_UNUSED)
    pbdata *pd = d;
 
    if (pd->timer) ecore_timer_del(pd->timer);
-   efl_del(pd->win);
+   efl_unref(pd->win);
    free(pd);
 }
 
@@ -117,7 +117,7 @@ test_ui_progressbar(void *data EINA_UNUSED, Eo *obj 
EINA_UNUSED, void *event_inf
 
    pd = (pbdata *)calloc(1, sizeof(pbdata));
 
-   pd->win = win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+   pd->win = win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                            efl_ui_win_type_set(efl_added, EFL_UI_WIN_BASIC),
                            efl_text_set(efl_added, "Efl.Ui.Progressbar"),
                            efl_ui_win_autodel_set(efl_added, EINA_TRUE),
diff --git a/src/bin/elementary/test_ui_scroller.c 
b/src/bin/elementary/test_ui_scroller.c
index 5d9a6898e4..3edc6868bf 100644
--- a/src/bin/elementary/test_ui_scroller.c
+++ b/src/bin/elementary/test_ui_scroller.c
@@ -28,7 +28,7 @@ test_efl_ui_scroller(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void
    Eo *win, *sc, *sc2, *sc3, *bx, *bx2, *gd, *gd2;
    int i, j;
 
-   win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+   win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                  efl_ui_win_type_set(efl_added, EFL_UI_WIN_BASIC),
                  efl_text_set(efl_added, "Efl Ui Scroller"),
                  efl_ui_win_autodel_set(efl_added, EINA_TRUE));
diff --git a/src/bin/elementary/test_ui_slider.c 
b/src/bin/elementary/test_ui_slider.c
index 966cc6e86b..9f54a9d365 100644
--- a/src/bin/elementary/test_ui_slider.c
+++ b/src/bin/elementary/test_ui_slider.c
@@ -32,7 +32,7 @@ test_ui_slider(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *event
    Eo *win, *bx, *hbx;
    double step;
 
-   win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+   win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                  efl_ui_win_type_set(efl_added, EFL_UI_WIN_BASIC),
                  efl_text_set(efl_added, "Efl.Ui.Slider"),
                  efl_ui_win_autodel_set(efl_added, EINA_TRUE));
diff --git a/src/bin/elementary/test_ui_slider_interval.c 
b/src/bin/elementary/test_ui_slider_interval.c
index bad8fca4a6..3973b3d846 100644
--- a/src/bin/elementary/test_ui_slider_interval.c
+++ b/src/bin/elementary/test_ui_slider_interval.c
@@ -32,7 +32,7 @@ test_slider_interval(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void
    Eo *win, *bx, *hbx;
    double step;
 
-   win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+   win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                  efl_ui_win_type_set(efl_added, EFL_UI_WIN_BASIC),
                  efl_text_set(efl_added, "Efl.Ui.Slider_Interval"),
                  efl_ui_win_autodel_set(efl_added, EINA_TRUE));
diff --git a/src/bin/elementary/test_ui_spin.c 
b/src/bin/elementary/test_ui_spin.c
index c857cd040b..85945a3101 100644
--- a/src/bin/elementary/test_ui_spin.c
+++ b/src/bin/elementary/test_ui_spin.c
@@ -36,7 +36,7 @@ test_ui_spin(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *event_i
 {
    Eo *win, *bx, *sp;
 
-   win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+   win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                  efl_ui_win_type_set(efl_added, EFL_UI_WIN_BASIC),
                  efl_text_set(efl_added, "Efl.Ui.Spin"),
                  efl_ui_win_autodel_set(efl_added, EINA_TRUE));
diff --git a/src/bin/elementary/test_ui_spin_button.c 
b/src/bin/elementary/test_ui_spin_button.c
index 0a91da7170..095c2a510d 100644
--- a/src/bin/elementary/test_ui_spin_button.c
+++ b/src/bin/elementary/test_ui_spin_button.c
@@ -27,7 +27,7 @@ test_ui_spin_button(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *
    for (i = 0; i < NUM_OF_VALS; i++)
      eina_array_push(array, &values[i]);
 
-   win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+   win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                  efl_ui_win_type_set(efl_added, EFL_UI_WIN_BASIC),
                  efl_text_set(efl_added, "Efl.Ui.Spin_Button"),
                  efl_ui_win_autodel_set(efl_added, EINA_TRUE));
diff --git a/src/bin/elementary/test_ui_table_static.c 
b/src/bin/elementary/test_ui_table_static.c
index 95de97e30f..369236fde7 100644
--- a/src/bin/elementary/test_ui_table_static.c
+++ b/src/bin/elementary/test_ui_table_static.c
@@ -104,7 +104,7 @@ test_ui_table_static(void *data EINA_UNUSED, Evas_Object 
*obj EINA_UNUSED, void
    Eo *win, *table, *bt, *rc, *en;
    api_data *api = calloc(1, sizeof(*api));
 
-   win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+   win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                 efl_ui_win_name_set(efl_added, "table"),
                 efl_text_set(efl_added, "Table"),
                 efl_ui_win_autodel_set(efl_added, EINA_TRUE),
diff --git a/src/bin/elementary/test_win_dialog.c 
b/src/bin/elementary/test_win_dialog.c
index 5e380ae577..6858cf85a9 100644
--- a/src/bin/elementary/test_win_dialog.c
+++ b/src/bin/elementary/test_win_dialog.c
@@ -101,7 +101,7 @@ _bt4_clicked_cb(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *even
 {
    Efl_Canvas_Object *dia, *lb;
 
-   dia = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+   dia = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                  efl_ui_win_type_set(efl_added, EFL_UI_WIN_DIALOG_BASIC),
                  efl_ui_win_name_set(efl_added, "window-dia-4"),
                  efl_ui_win_autodel_set(efl_added, EINA_TRUE),
diff --git a/src/bin/elementary/test_win_indicator.c 
b/src/bin/elementary/test_win_indicator.c
index ecc73de3b4..99f54c589e 100644
--- a/src/bin/elementary/test_win_indicator.c
+++ b/src/bin/elementary/test_win_indicator.c
@@ -14,7 +14,7 @@ _create_indicator(void)
 {
    const char *indi_name;
 
-   Eo *win = efl_add(EFL_UI_WIN_SOCKET_CLASS, efl_main_loop_get(),
+   Eo *win = efl_add_ref(EFL_UI_WIN_SOCKET_CLASS, NULL,
                     efl_text_set(efl_added, "indicator"),
                     efl_ui_win_autodel_set(efl_added, EINA_TRUE),
                     efl_ui_win_alpha_set(efl_added, EINA_TRUE));
@@ -91,7 +91,7 @@ test_win_indicator(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *e
    indicator = _create_indicator();
 
    // FIXME: Resizing window should no cause sizing issues!
-   win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+   win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                  efl_ui_win_type_set(efl_added, EFL_UI_WIN_BASIC),
                  efl_text_set(efl_added, "Efl.Win.Indicator"),
                  efl_gfx_size_hint_max_set(efl_added, EINA_SIZE2D(300, -1)),
diff --git a/src/bin/elementary/test_win_stack.c 
b/src/bin/elementary/test_win_stack.c
index de16e7bb83..d13072d041 100644
--- a/src/bin/elementary/test_win_stack.c
+++ b/src/bin/elementary/test_win_stack.c
@@ -18,13 +18,13 @@ _win_new(Evas_Object *stack_top, const char *title)
    Evas_Object *bg, *bx, *bt, *lb, *win;
 
    if (level >= 3)
-     win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+     win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                    efl_ui_win_name_set(efl_added, "window-stack"),
                    efl_ui_win_type_set(efl_added, ELM_WIN_NAVIFRAME_BASIC),
                    efl_text_set(efl_added, title),
                    efl_ui_win_autodel_set(efl_added, EINA_TRUE));
    else
-     win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+     win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
                    efl_ui_win_name_set(efl_added, "window-stack"),
                    efl_ui_win_type_set(efl_added, ELM_WIN_DIALOG_BASIC),
                    efl_text_set(efl_added, title),
diff --git a/src/examples/ecore/ecore_audio_custom.c 
b/src/examples/ecore/ecore_audio_custom.c
index abd174b78e..b0d26a1e75 100644
--- a/src/examples/ecore/ecore_audio_custom.c
+++ b/src/examples/ecore/ecore_audio_custom.c
@@ -56,9 +56,9 @@ main(int argc, const char *argv[])
 
    ecore_app_args_set(argc, argv);
 
-   out = efl_add(ECORE_AUDIO_OBJ_OUT_PULSE_CLASS, efl_main_loop_get());
+   out = efl_add_ref(ECORE_AUDIO_OBJ_OUT_PULSE_CLASS, NULL);
 
-   in = efl_add(ECORE_AUDIO_OBJ_IN_CLASS, efl_main_loop_get());
+   in = efl_add_ref(ECORE_AUDIO_OBJ_IN_CLASS, NULL);
    if (!in)
      {
         printf("error when creating ecore audio source.\n");
diff --git a/src/examples/ecore/ecore_audio_playback.c 
b/src/examples/ecore/ecore_audio_playback.c
index 1c322738d3..c659f09d55 100644
--- a/src/examples/ecore/ecore_audio_playback.c
+++ b/src/examples/ecore/ecore_audio_playback.c
@@ -201,7 +201,7 @@ static void _play_finished(void *data EINA_UNUSED, const 
Efl_Event *event)
 
   inputs = eina_list_remove(inputs, event->object);
   ret = ecore_audio_obj_out_input_detach(out, event->object);
-  efl_del(event->object);
+  efl_unref(event->object);
 
   if (!ret)
     printf("Could not detach input %s\n", name);
@@ -252,7 +252,7 @@ main(int argc, const char *argv[])
      {
        if (!strncmp(argv[i], "tone:", 5))
          {
-            in = efl_add(ECORE_AUDIO_OBJ_IN_TONE_CLASS, efl_main_loop_get());
+            in = efl_add_ref(ECORE_AUDIO_OBJ_IN_TONE_CLASS, NULL);
             if (!in)
               {
                  printf("error when creating ecore audio source.\n");
@@ -276,7 +276,7 @@ main(int argc, const char *argv[])
          }
        else
          {
-            in = efl_add(ECORE_AUDIO_OBJ_IN_SNDFILE_CLASS, 
efl_main_loop_get());
+            in = efl_add_ref(ECORE_AUDIO_OBJ_IN_SNDFILE_CLASS, NULL);
             if (!in)
               {
                  printf("error when creating ecore audio source.\n");
@@ -307,7 +307,7 @@ main(int argc, const char *argv[])
 
    printf("Start: %s (%0.2fs)\n", name, length);
 
-   out = efl_add(ECORE_AUDIO_OBJ_OUT_PULSE_CLASS, efl_main_loop_get());
+   out = efl_add_ref(ECORE_AUDIO_OBJ_OUT_PULSE_CLASS, NULL);
    ret = ecore_audio_obj_out_input_attach(out, in);
    if (!ret)
      printf("Could not attach input %s\n", name);
diff --git a/src/examples/ecore/ecore_audio_to_ogg.c 
b/src/examples/ecore/ecore_audio_to_ogg.c
index 63c7f66904..756e69a209 100644
--- a/src/examples/ecore/ecore_audio_to_ogg.c
+++ b/src/examples/ecore/ecore_audio_to_ogg.c
@@ -24,8 +24,8 @@ static void _play_finished(void *data EINA_UNUSED, const 
Efl_Event *event)
   printf("Done: %s\n", name);
 
   ecore_audio_obj_in_output_get(event->object, &out);
-  efl_del(event->object);
-  efl_del(out);
+  efl_unref(event->object);
+  efl_unref(out);
 
   ecore_main_loop_quit();
 
@@ -49,31 +49,31 @@ main(int argc, char *argv[])
    ecore_audio_init();
 
 
-   in = efl_add(ECORE_AUDIO_OBJ_IN_SNDFILE_CLASS, efl_main_loop_get());
+   in = efl_add_ref(ECORE_AUDIO_OBJ_IN_SNDFILE_CLASS, NULL);
    efl_name_set(in, basename(argv[1]));
    ret = ecore_audio_obj_source_set(in, argv[1]);
    if (!ret) {
      printf("Could not set %s as input\n", argv[1]);
-     efl_del(in);
+     efl_unref(in);
      return 1;
    }
 
    efl_event_callback_add(in, ECORE_AUDIO_EV_IN_STOPPED, _play_finished, NULL);
 
-   out = efl_add(ECORE_AUDIO_OBJ_OUT_SNDFILE_CLASS, efl_main_loop_get());
+   out = efl_add_ref(ECORE_AUDIO_OBJ_OUT_SNDFILE_CLASS, NULL);
    ret = ecore_audio_obj_source_set(out, argv[2]);
    if (!ret) {
      printf("Could not set %s as output\n", argv[2]);
-     efl_del(in);
-     efl_del(out);
+     efl_unref(in);
+     efl_unref(out);
      return 1;
    }
 
    ret = ecore_audio_obj_out_input_attach(out, in);
    if (!ret) {
      printf("Could not attach input\n");
-     efl_del(out);
-     efl_del(in);
+     efl_unref(out);
+     efl_unref(in);
      return 1;
    }
 
diff --git a/src/examples/ecore/ecore_idler_example.c 
b/src/examples/ecore/ecore_idler_example.c
index a88a0029c8..2185210763 100644
--- a/src/examples/ecore/ecore_idler_example.c
+++ b/src/examples/ecore/ecore_idler_example.c
@@ -110,7 +110,7 @@ main(void)
    ctxt.enterer = ecore_idle_enterer_add(_enterer_cb, &ctxt);
    ctxt.exiter = ecore_idle_exiter_add(_exiter_cb, &ctxt);
    ctxt.idler = ecore_idler_add(_idler_cb, &ctxt);
-//   ctxt.idler = efl_add(ECORE_IDLER_CLASS, efl_main_loop_get(), 
ecore_idler_constructor(efl_added, _idler_cb, &ctxt));
+//   ctxt.idler = efl_add_ref(ECORE_IDLER_CLASS, NULL, 
ecore_idler_constructor(efl_added, _idler_cb, &ctxt));
    ctxt.handler = ecore_event_handler_add(_event_type,
                                           _event_handler_cb,
                                           &ctxt);
diff --git a/src/examples/ecore/ecore_poller_example.c 
b/src/examples/ecore/ecore_poller_example.c
index 928b937599..3cbbcc5f2e 100644
--- a/src/examples/ecore/ecore_poller_example.c
+++ b/src/examples/ecore/ecore_poller_example.c
@@ -48,9 +48,9 @@ main(void)
    poller2 = ecore_poller_add(ECORE_POLLER_CORE, 8, _poller_print_cb, str2);
    poller3 = ecore_poller_add(ECORE_POLLER_CORE, 30, _poller_quit_cb, str3);
 
-//   poller1 = efl_add(ECORE_POLLER_CLASS, efl_main_loop_get(), //         
ecore_poller_constructor(efl_added, ECORE_POLLER_CORE, 4, _poller_print_cb, 
str1));
-//   poller2 = efl_add(ECORE_POLLER_CLASS, efl_main_loop_get(), //         
ecore_poller_constructor(efl_added, ECORE_POLLER_CORE, 8, _poller_print_cb, 
str2));
-//   poller3 = efl_add(ECORE_POLLER_CLASS, efl_main_loop_get(), //         
ecore_poller_constructor(efl_added, ECORE_POLLER_CORE, 20, _poller_quit_cb, 
str3));
+//   poller1 = efl_add_ref(ECORE_POLLER_CLASS, NULL, //         
ecore_poller_constructor(efl_added, ECORE_POLLER_CORE, 4, _poller_print_cb, 
str1));
+//   poller2 = efl_add_ref(ECORE_POLLER_CLASS, NULL, //         
ecore_poller_constructor(efl_added, ECORE_POLLER_CORE, 8, _poller_print_cb, 
str2));
+//   poller3 = efl_add_ref(ECORE_POLLER_CLASS, NULL, //         
ecore_poller_constructor(efl_added, ECORE_POLLER_CORE, 20, _poller_quit_cb, 
str3));
 
 
    ecore_main_loop_begin();
@@ -61,9 +61,9 @@ main(void)
 //   ecore_poller_interval_set(poller2, 16, NULL);
    ecore_main_loop_begin();
 
-//   efl_del(poller1);
-//   efl_del(poller2);
-//   efl_del(poller3);
+//   efl_unref(poller1);
+//   efl_unref(poller2);
+//   efl_unref(poller3);
    ecore_poller_del(poller1);
    ecore_poller_del(poller2);
    ecore_poller_del(poller3);
diff --git a/src/examples/ecore/efl_io_copier_example.c 
b/src/examples/ecore/efl_io_copier_example.c
index a07b79186a..b7e526bd3c 100644
--- a/src/examples/ecore/efl_io_copier_example.c
+++ b/src/examples/ecore/efl_io_copier_example.c
@@ -452,7 +452,7 @@ efl_main(void *data EINA_UNUSED,
 
    if (strcmp(input_fname, ":stdin:") == 0)
      {
-        input = efl_add(EFL_IO_STDIN_CLASS, ev->object,
+        input = efl_add_ref(EFL_IO_STDIN_CLASS, NULL,
                         efl_event_callback_array_add(efl_added, input_cbs(), 
NULL));
         if (!input)
           {
@@ -662,7 +662,7 @@ efl_main(void *data EINA_UNUSED,
    else
      {
         /* regular file, open with flags: read-only and close-on-exec */
-        input = efl_add(EFL_IO_FILE_CLASS, ev->object,
+        input = efl_add_ref(EFL_IO_FILE_CLASS, NULL,
                         efl_file_set(efl_added, input_fname, NULL), /* 
mandatory */
                         efl_io_file_flags_set(efl_added, O_RDONLY), /* default 
*/
                         efl_io_closer_close_on_exec_set(efl_added, EINA_TRUE), 
/* recommended, set *after* flags, or include O_CLOEXEC in flags -- be careful 
with _WIN32 that doesn't support it. */
@@ -679,7 +679,7 @@ efl_main(void *data EINA_UNUSED,
 
    if (strcmp(output_fname, ":stdout:") == 0)
      {
-        output = efl_add(EFL_IO_STDOUT_CLASS, ev->object,
+        output = efl_add_ref(EFL_IO_STDOUT_CLASS, NULL,
                          efl_event_callback_array_add(efl_added, output_cbs(), 
NULL) /* optional */
                          );
         if (!output)
@@ -691,7 +691,7 @@ efl_main(void *data EINA_UNUSED,
      }
    else if (strcmp(output_fname, ":stderr:") == 0)
      {
-        output = efl_add(EFL_IO_STDERR_CLASS, ev->object,
+        output = efl_add_ref(EFL_IO_STDERR_CLASS, NULL,
                          efl_event_callback_array_add(efl_added, output_cbs(), 
NULL) /* optional */
                          );
         if (!output)
@@ -718,7 +718,7 @@ efl_main(void *data EINA_UNUSED,
          * When finished get the efl_io_buffer_slice_get(), see
          * _copier_done().
          */
-        output = efl_add(EFL_IO_BUFFER_CLASS, ev->object,
+        output = efl_add_ref(EFL_IO_BUFFER_CLASS, NULL,
                          efl_event_callback_array_add(efl_added, output_cbs(), 
NULL), /* optional */
                          efl_event_callback_array_add(efl_added, 
output_buffer_cbs(), NULL) /* optional */
                          );
@@ -938,7 +938,7 @@ efl_main(void *data EINA_UNUSED,
         /* regular file, open with flags: write-only, close-on-exec,
          * create if did not exist and truncate if exist.
          */
-        output = efl_add(EFL_IO_FILE_CLASS, ev->object,
+        output = efl_add_ref(EFL_IO_FILE_CLASS, NULL,
                          efl_file_set(efl_added, output_fname, NULL), /* 
mandatory */
                          efl_io_file_flags_set(efl_added, O_WRONLY | O_CREAT | 
O_TRUNC), /* mandatory for write */
                          efl_io_closer_close_on_exec_set(efl_added, 
EINA_TRUE), /* recommended, set *after* flags, or include O_CLOEXEC in flags -- 
be careful with _WIN32 that doesn't support it. */
diff --git a/src/examples/ecore/efl_io_queue_example.c 
b/src/examples/ecore/efl_io_queue_example.c
index 1abd3b71b6..9367716729 100644
--- a/src/examples/ecore/efl_io_queue_example.c
+++ b/src/examples/ecore/efl_io_queue_example.c
@@ -258,7 +258,7 @@ efl_main(void *data EINA_UNUSED,
     * the line_delimiter, then wait for a reply from the server, then
     * write another.
     */
-   send_queue = efl_add(EFL_IO_QUEUE_CLASS, ev->object,
+   send_queue = efl_add_ref(EFL_IO_QUEUE_CLASS, NULL,
                         efl_name_set(efl_added, "send_queue"),
                         efl_io_queue_limit_set(efl_added, buffer_limit));
    if (!send_queue)
@@ -279,7 +279,7 @@ efl_main(void *data EINA_UNUSED,
     * Our example's usage is to peek its data with slice_get() then
     * clear().
     */
-   receive_queue = efl_add(EFL_IO_QUEUE_CLASS, ev->object,
+   receive_queue = efl_add_ref(EFL_IO_QUEUE_CLASS, NULL,
                            efl_name_set(efl_added, "receive_queue"),
                            efl_io_queue_limit_set(efl_added, buffer_limit),
                            efl_event_callback_add(efl_added, 
EFL_IO_QUEUE_EVENT_SLICE_CHANGED, _receiver_data, NULL));
@@ -359,9 +359,9 @@ efl_main(void *data EINA_UNUSED,
  error_sender:
    efl_del(dialer);
  error_dialer:
-   efl_del(receive_queue);
+   efl_unref(receive_queue);
  error_receive_queue:
-   efl_del(send_queue);
+   efl_unref(send_queue);
  end:
    EINA_LIST_FREE(commands, cmd)
      {
diff --git a/src/examples/ecore/efl_net_server_example.c 
b/src/examples/ecore/efl_net_server_example.c
index 29a4b96547..25188b31c4 100644
--- a/src/examples/ecore/efl_net_server_example.c
+++ b/src/examples/ecore/efl_net_server_example.c
@@ -350,11 +350,11 @@ _server_client_add(void *data EINA_UNUSED, const 
Efl_Event *event)
              return;
           }
 
-        send_buffer = efl_add(EFL_IO_BUFFER_CLASS, efl_main_loop_get(),
+        send_buffer = efl_add_ref(EFL_IO_BUFFER_CLASS, NULL,
                               efl_io_buffer_adopt_readonly(efl_added, 
hello_world_slice));
 
         /* Unlimited buffer to store the received data. */
-        recv_buffer = efl_add(EFL_IO_BUFFER_CLASS, efl_main_loop_get());
+        recv_buffer = efl_add_ref(EFL_IO_BUFFER_CLASS, NULL);
 
         /* an input copier that takes data from send_buffer and pushes to 
client */
         d->send_copier = efl_add(EFL_IO_COPIER_CLASS, efl_parent_get(client),
@@ -712,7 +712,7 @@ efl_main(void *data EINA_UNUSED,
                cipher = EFL_NET_SSL_CIPHER_TLSV1_2;
           }
 
-        ssl_ctx = efl_add(EFL_NET_SSL_CONTEXT_CLASS, efl_main_loop_get(),
+        ssl_ctx = efl_add_ref(EFL_NET_SSL_CONTEXT_CLASS, NULL,
                           efl_net_ssl_context_certificates_set(efl_added, 
eina_list_iterator_new(certificates)),
                           efl_net_ssl_context_private_keys_set(efl_added, 
eina_list_iterator_new(private_keys)),
                           
efl_net_ssl_context_certificate_revocation_lists_set(efl_added, 
eina_list_iterator_new(crls)),
diff --git a/src/examples/ecore/efl_net_server_simple_example.c 
b/src/examples/ecore/efl_net_server_simple_example.c
index beb314b2a0..998ad66ca5 100644
--- a/src/examples/ecore/efl_net_server_simple_example.c
+++ b/src/examples/ecore/efl_net_server_simple_example.c
@@ -520,7 +520,7 @@ efl_main(void *data EINA_UNUSED,
                cipher = EFL_NET_SSL_CIPHER_TLSV1_2;
           }
 
-        ssl_ctx = efl_add(EFL_NET_SSL_CONTEXT_CLASS, ev->object,
+        ssl_ctx = efl_add_ref(EFL_NET_SSL_CONTEXT_CLASS, NULL,
                           efl_net_ssl_context_certificates_set(efl_added, 
eina_list_iterator_new(certificates)),
                           efl_net_ssl_context_private_keys_set(efl_added, 
eina_list_iterator_new(private_keys)),
                           
efl_net_ssl_context_certificate_revocation_lists_set(efl_added, 
eina_list_iterator_new(crls)),
diff --git a/src/examples/ecore/efl_net_socket_ssl_dialer_example.c 
b/src/examples/ecore/efl_net_socket_ssl_dialer_example.c
index e3579b471a..75acb0b42d 100644
--- a/src/examples/ecore/efl_net_socket_ssl_dialer_example.c
+++ b/src/examples/ecore/efl_net_socket_ssl_dialer_example.c
@@ -311,7 +311,7 @@ efl_terminate(void *data EINA_UNUSED,
         efl_del(dialer);
         dialer = NULL;
 
-        efl_del(ssl_ctx);
+        efl_unref(ssl_ctx);
         ssl_ctx = NULL;
 
         EINA_LIST_FREE(pending_send, str) free(str);
@@ -456,7 +456,7 @@ efl_main(void *data EINA_UNUSED,
    /* create a new SSL context with command line configurations.
     * another option would be to use the default dialer context */
 #ifndef USE_DEFAULT_CONTEXT
-   ssl_ctx = efl_add(EFL_NET_SSL_CONTEXT_CLASS, ev->object,
+   ssl_ctx = efl_add_ref(EFL_NET_SSL_CONTEXT_CLASS, NULL,
                      efl_net_ssl_context_certificates_set(efl_added, 
eina_list_iterator_new(certificates)),
                      efl_net_ssl_context_private_keys_set(efl_added, 
eina_list_iterator_new(private_keys)),
                      
efl_net_ssl_context_certificate_revocation_lists_set(efl_added, 
eina_list_iterator_new(crls)),
@@ -528,7 +528,7 @@ efl_main(void *data EINA_UNUSED,
    efl_io_closer_close(dialer); /* just del won't do as ssl has an extra ref */
    efl_del(dialer);
  no_ssl_ctx:
-   efl_del(ssl_ctx);
+   efl_unref(ssl_ctx);
 
  end:
    EINA_LIST_FREE(pending_send, str) free(str);
diff --git a/src/examples/ecore/efl_net_socket_ssl_server_example.c 
b/src/examples/ecore/efl_net_socket_ssl_server_example.c
index 4b9171e41a..38e93b6dbe 100644
--- a/src/examples/ecore/efl_net_socket_ssl_server_example.c
+++ b/src/examples/ecore/efl_net_socket_ssl_server_example.c
@@ -227,7 +227,7 @@ efl_terminate(void *data EINA_UNUSED,
         efl_del(server);
         server = NULL;
 
-        efl_del(ssl_ctx);
+        efl_unref(ssl_ctx);
         ssl_ctx = NULL;
 
         EINA_LIST_FREE(certificates, str) free(str);
@@ -301,7 +301,7 @@ efl_main(void *data EINA_UNUSED,
           cipher = EFL_NET_SSL_CIPHER_TLSV1_2;
      }
 
-   ssl_ctx = efl_add(EFL_NET_SSL_CONTEXT_CLASS, ev->object,
+   ssl_ctx = efl_add_ref(EFL_NET_SSL_CONTEXT_CLASS, NULL,
                      efl_net_ssl_context_certificates_set(efl_added, 
eina_list_iterator_new(certificates)),
                      efl_net_ssl_context_private_keys_set(efl_added, 
eina_list_iterator_new(private_keys)),
                      
efl_net_ssl_context_certificate_revocation_lists_set(efl_added, 
eina_list_iterator_new(crls)),
@@ -363,7 +363,7 @@ efl_main(void *data EINA_UNUSED,
    efl_del(server);
    server = NULL;
  end_ctx:
-   efl_del(ssl_ctx);
+   efl_unref(ssl_ctx);
 
  end:
    EINA_LIST_FREE(certificates, str) free(str);
diff --git a/src/examples/eio/eio_sentry.c b/src/examples/eio/eio_sentry.c
index f6b3e8ac51..e604e8900d 100644
--- a/src/examples/eio/eio_sentry.c
+++ b/src/examples/eio/eio_sentry.c
@@ -27,7 +27,7 @@ void
 monitor_stuff(void *data)
 {
     const char *path = data;
-    Eio_Sentry *sentry = efl_add(EIO_SENTRY_CLASS, efl_main_loop_get());
+    Eio_Sentry *sentry = efl_add_ref(EIO_SENTRY_CLASS, NULL);
     efl_event_callback_add(sentry, EIO_SENTRY_EVENT_FILE_CREATED, 
(Efl_Event_Cb)&sentry_cb, NULL);
 
     printf("Starting monitoring path %s\n", path);
diff --git a/src/examples/elementary/efl_ui_scroller_example.c 
b/src/examples/elementary/efl_ui_scroller_example.c
index 99a7a55271..4de4d216a3 100644
--- a/src/examples/elementary/efl_ui_scroller_example.c
+++ b/src/examples/elementary/efl_ui_scroller_example.c
@@ -15,8 +15,8 @@ efl_main(void *data EINA_UNUSED, const Efl_Event *ev)
    elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
    elm_app_info_set(efl_main, "elementary", "images/plant_01.jpg");
 
-   win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(), "TEST", ELM_WIN_BASIC,
-                 efl_ui_win_autodel_set(efl_added, EINA_TRUE));
+   win = efl_add_ref(EFL_UI_WIN_CLASS, NULL, "TEST", ELM_WIN_BASIC,
+                        efl_ui_win_autodel_set(efl_added, EINA_TRUE));
    efl_gfx_entity_size_set(win, EINA_SIZE2D(300, 400));
 
    scroller = efl_add(EFL_UI_SCROLLER_CLASS, win);
diff --git a/src/examples/elementary/efl_ui_view_list_example_1.c 
b/src/examples/elementary/efl_ui_view_list_example_1.c
index 5e86875fba..529d44cc09 100644
--- a/src/examples/elementary/efl_ui_view_list_example_1.c
+++ b/src/examples/elementary/efl_ui_view_list_example_1.c
@@ -49,7 +49,7 @@ _make_model()
    unsigned int i, s;
    char buf[256];
 
-   model = efl_add(EFL_MODEL_ITEM_CLASS, efl_main_loop_get());
+   model = efl_add_ref(EFL_MODEL_ITEM_CLASS, NULL);
    eina_value_setup(&vtext, EINA_VALUE_TYPE_STRING);
 
    for (i = 0; i < (NUM_ITEMS); i++)
diff --git a/src/examples/elementary/efl_ui_view_list_example_2.c 
b/src/examples/elementary/efl_ui_view_list_example_2.c
index 7b5ef4c4e5..641d0a6300 100644
--- a/src/examples/elementary/efl_ui_view_list_example_2.c
+++ b/src/examples/elementary/efl_ui_view_list_example_2.c
@@ -43,7 +43,7 @@ elm_main(int argc, char **argv)
    if (argv[1] != NULL) dirname = argv[1];
    else dirname = EFL_MODEL_TEST_FILENAME_PATH;
 
-   model = efl_add(EIO_MODEL_CLASS, efl_main_loop_get(), 
eio_model_path_set(efl_added, dirname));
+   model = efl_add_ref(EIO_MODEL_CLASS, NULL, eio_model_path_set(efl_added, 
dirname));
    factory = efl_add(EFL_UI_LAYOUT_FACTORY_CLASS, win);
    efl_ui_model_connect(factory, "efl.text", "filename");
    efl_ui_layout_factory_theme_config(factory, "list_item", NULL, "default");
diff --git a/src/examples/elementary/efl_ui_view_list_example_3.c 
b/src/examples/elementary/efl_ui_view_list_example_3.c
index 9e7507fc9b..ece4e9ce02 100644
--- a/src/examples/elementary/efl_ui_view_list_example_3.c
+++ b/src/examples/elementary/efl_ui_view_list_example_3.c
@@ -173,7 +173,7 @@ _make_model()
    Efl_Model_Item *model, *child;
    unsigned int i, len;
 
-   model = efl_add(EFL_MODEL_ITEM_CLASS, efl_main_loop_get());
+   model = efl_add_ref(EFL_MODEL_ITEM_CLASS, NULL);
    eina_value_setup(&vtext, EINA_VALUE_TYPE_STRING);
    eina_value_setup(&value, EINA_VALUE_TYPE_UCHAR);
 
diff --git a/src/examples/elementary/filemvc.c 
b/src/examples/elementary/filemvc.c
index 2b1e81d13e..6935e9387b 100644
--- a/src/examples/elementary/filemvc.c
+++ b/src/examples/elementary/filemvc.c
@@ -35,7 +35,6 @@ _cleanup_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void
    efl_unref(priv->fileview);
    efl_unref(priv->treeview);
    efl_unref(priv->formview);
-   efl_unref(priv->treemodel);
 }
 
 static int
@@ -125,12 +124,12 @@ elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
    else dirname = EFL_MODEL_TEST_FILENAME_PATH;
 
    //treemodel
-   priv.treemodel = efl_add(EIO_MODEL_CLASS, efl_main_loop_get(), 
eio_model_path_set(efl_added, dirname));
+   priv.treemodel = efl_add(EIO_MODEL_CLASS, win, 
eio_model_path_set(efl_added, dirname));
    eio_model_children_filter_set(priv.treemodel, NULL, _filter_cb, NULL);
 
    //treeview
    genlist = elm_genlist_add(win);
-   priv.treeview = efl_add(ELM_VIEW_LIST_CLASS, efl_main_loop_get(), 
elm_view_list_genlist_set(efl_added, genlist, ELM_GENLIST_ITEM_TREE, NULL));
+   priv.treeview = efl_add_ref(ELM_VIEW_LIST_CLASS, NULL, 
elm_view_list_genlist_set(efl_added, genlist, ELM_GENLIST_ITEM_TREE, NULL));
    elm_view_list_property_connect(priv.treeview, "filename", "elm.text");
    elm_view_list_property_connect(priv.treeview, "icon", "elm.swallow.icon");
    elm_view_list_model_set(priv.treeview, priv.treemodel);
@@ -145,7 +144,7 @@ elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
 
    //listview
    genlist = elm_genlist_add(win);
-   priv.fileview = efl_add(ELM_VIEW_LIST_CLASS, efl_main_loop_get(), 
elm_view_list_genlist_set(efl_added, genlist, ELM_GENLIST_ITEM_NONE, 
"double_label"));
+   priv.fileview = efl_add_ref(ELM_VIEW_LIST_CLASS, NULL, 
elm_view_list_genlist_set(efl_added, genlist, ELM_GENLIST_ITEM_NONE, 
"double_label"));
    elm_view_list_property_connect(priv.fileview, "filename", "elm.text");
    elm_view_list_property_connect(priv.fileview, "mime_type", "elm.text.sub");
 
@@ -159,7 +158,7 @@ elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
    bxr = elm_box_add(win);
    _widget_init(bxr);
    elm_object_part_content_set(vpanes, "right", bxr);
-   priv.formview = efl_add(ELM_VIEW_FORM_CLASS, efl_main_loop_get());
+   priv.formview = efl_add_ref(ELM_VIEW_FORM_CLASS, NULL);
 
    /*Label widget */
    elm_view_form_widget_add(priv.formview, "filename", _label_init(win, bxr, 
"File Name"));
diff --git a/src/examples/elementary/fileviewlist.c 
b/src/examples/elementary/fileviewlist.c
index d36295f017..39df4f87c0 100644
--- a/src/examples/elementary/fileviewlist.c
+++ b/src/examples/elementary/fileviewlist.c
@@ -54,8 +54,8 @@ elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
    evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, 
EVAS_HINT_EXPAND);
    evas_object_show(genlist);
 
-   priv.filemodel = efl_add(EIO_MODEL_CLASS, efl_main_loop_get(), 
eio_model_path_set(efl_added, dirname));
-   priv.fileview = efl_add(ELM_VIEW_LIST_CLASS, efl_main_loop_get(), 
elm_view_list_genlist_set(efl_added, genlist, ELM_GENLIST_ITEM_TREE, 
"double_label"));
+   priv.filemodel = efl_add_ref(EIO_MODEL_CLASS, NULL, 
eio_model_path_set(efl_added, dirname));
+   priv.fileview = efl_add_ref(ELM_VIEW_LIST_CLASS, NULL, 
elm_view_list_genlist_set(efl_added, genlist, ELM_GENLIST_ITEM_TREE, 
"double_label"));
    elm_view_list_model_set(priv.fileview, priv.filemodel);
    evas_object_event_callback_add(win, EVAS_CALLBACK_DEL, _cleanup_cb, &priv);
 
diff --git a/src/examples/elementary/layout_model_connect.c 
b/src/examples/elementary/layout_model_connect.c
index 7021a2cca5..e93b34437d 100644
--- a/src/examples/elementary/layout_model_connect.c
+++ b/src/examples/elementary/layout_model_connect.c
@@ -111,10 +111,10 @@ elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
    if (argv[1] != NULL) dirname = argv[1];
    else dirname = EFL_MODEL_TEST_FILENAME_PATH;
 
-   priv->model = efl_add(EIO_MODEL_CLASS, efl_main_loop_get(), 
eio_model_path_set(efl_added, dirname));
+   priv->model = efl_add_ref(EIO_MODEL_CLASS, NULL, 
eio_model_path_set(efl_added, dirname));
 
    genlist = elm_genlist_add(win);
-   priv->fileview = efl_add(ELM_VIEW_LIST_CLASS, efl_main_loop_get(), 
elm_view_list_genlist_set(efl_added, genlist, ELM_GENLIST_ITEM_NONE, NULL));
+   priv->fileview = efl_add_ref(ELM_VIEW_LIST_CLASS, NULL, 
elm_view_list_genlist_set(efl_added, genlist, ELM_GENLIST_ITEM_NONE, NULL));
    elm_view_list_property_connect(priv->fileview, "filename", "elm.text");
    elm_view_list_model_set(priv->fileview, priv->model);
    _widget_init(genlist);
diff --git a/src/lib/ecore_con/efl_net_ip_address.c 
b/src/lib/ecore_con/efl_net_ip_address.c
index 097d233db2..e2fbb68f06 100644
--- a/src/lib/ecore_con/efl_net_ip_address.c
+++ b/src/lib/ecore_con/efl_net_ip_address.c
@@ -311,7 +311,7 @@ _efl_net_ip_address_create(Eo *cls, void *pd EINA_UNUSED, 
uint16_t port, const E
    else
      family = AF_INET;
 
-   return efl_add_ref(cls, NULL,
+   return efl_add_ref(cls, efl_main_loop_get(),
                   efl_net_ip_address_family_set(efl_added, family),
                   efl_net_ip_address_port_set(efl_added, port),
                   efl_net_ip_address_set(efl_added, address));
@@ -325,7 +325,7 @@ _efl_net_ip_address_create_sockaddr(Eo *cls, void *pd 
EINA_UNUSED, const void *p
    EINA_SAFETY_ON_NULL_RETURN_VAL(sockaddr, NULL);
    EINA_SAFETY_ON_TRUE_RETURN_VAL((sockaddr->sa_family != AF_INET) && 
(sockaddr->sa_family != AF_INET6), NULL);
 
-   return efl_add_ref(cls, NULL,
+   return efl_add_ref(cls, efl_main_loop_get(),
                   efl_net_ip_address_sockaddr_set(efl_added, sockaddr));
 }
 
@@ -368,7 +368,7 @@ _efl_net_ip_address_parse(Eo *cls, void *pd EINA_UNUSED, 
const char *numeric_add
         return NULL;
      }
 
-   return efl_add_ref(cls, NULL,
+   return efl_add_ref(cls, efl_main_loop_get(),
                   efl_net_ip_address_sockaddr_set(efl_added, &ss));
 }
 
diff --git a/src/lib/ecore_con/efl_net_ssl_context.c 
b/src/lib/ecore_con/efl_net_ssl_context.c
index 62de44ddc6..e1bc09095f 100644
--- a/src/lib/ecore_con/efl_net_ssl_context.c
+++ b/src/lib/ecore_con/efl_net_ssl_context.c
@@ -361,7 +361,7 @@ _efl_net_ssl_context_default_dialer_get(const Efl_Class 
*klass, void *pd EINA_UN
 {
    if (!_efl_net_ssl_context_default_dialer)
      {
-        _efl_net_ssl_context_default_dialer = efl_add_ref(klass, NULL,
+        _efl_net_ssl_context_default_dialer = efl_add(klass, 
efl_main_loop_get(),
                                                       
efl_net_ssl_context_verify_mode_set(efl_added, 
EFL_NET_SSL_VERIFY_MODE_REQUIRED),
                                                       
efl_net_ssl_context_hostname_verify_set(efl_added, EINA_TRUE),
                                                       
efl_net_ssl_context_default_paths_load_set(efl_added, EINA_TRUE),
diff --git a/src/lib/ecore_evas/ecore_evas.c b/src/lib/ecore_evas/ecore_evas.c
index da3401a286..fc0b830643 100644
--- a/src/lib/ecore_evas/ecore_evas.c
+++ b/src/lib/ecore_evas/ecore_evas.c
@@ -3511,7 +3511,7 @@ _ecore_evas_mouse_move_process_internal(Ecore_Evas *ee,
 
    efl_event_callback_legacy_call(ee->evas,
                                   _event_description_get(ev->action), evt);
-   efl_unref(evt);
+   efl_del(evt);
 }
 
 EAPI void
@@ -4729,7 +4729,7 @@ _direct_mouse_move_cb(Ecore_Evas *ee, const 
Ecore_Event_Mouse_Move *info)
 
    efl_event_callback_legacy_call(e, _event_description_get(ev->action), evt);
    processed = ev->evas_done;
-   efl_unref(evt);
+   efl_del(evt);
 
    return processed;
 }
@@ -4764,7 +4764,7 @@ _direct_mouse_wheel_cb(Ecore_Evas *ee, const 
Ecore_Event_Mouse_Wheel *info)
 
    efl_event_callback_legacy_call(e, _event_description_get(ev->action), evt);
    processed = ev->evas_done;
-   efl_unref(evt);
+   efl_del(evt);
 
    return processed;
 }
@@ -4794,7 +4794,7 @@ _direct_mouse_inout(Ecore_Evas *ee, const 
Ecore_Event_Mouse_IO *info, Efl_Pointe
 
    efl_event_callback_legacy_call(e, _event_description_get(ev->action), evt);
    processed = ev->evas_done;
-   efl_unref(evt);
+   efl_del(evt);
 
    return processed;
 }
@@ -4924,7 +4924,7 @@ _direct_axis_update_cb(Ecore_Evas *ee, const 
Ecore_Event_Axis_Update *info)
 
    efl_event_callback_legacy_call(e, _event_description_get(ev->action), evt);
    processed = ev->evas_done;
-   efl_unref(evt);
+   efl_del(evt);
 
    return processed;
 }
@@ -4966,7 +4966,7 @@ _direct_key_updown_cb(Ecore_Evas *ee, const 
Ecore_Event_Key *info, Eina_Bool dow
      efl_event_callback_legacy_call(e, EFL_EVENT_KEY_UP, evt);
 
    processed = ev->evas_done;
-   efl_unref(evt);
+   efl_del(evt);
 
    return processed;
 }
diff --git a/src/lib/edje/edje_main.c b/src/lib/edje/edje_main.c
index bd49820179..338fb66c88 100644
--- a/src/lib/edje/edje_main.c
+++ b/src/lib/edje/edje_main.c
@@ -153,7 +153,7 @@ shutdown_all:
         efl_loop_unregister(efl_main_loop_get(), 
EFL_GFX_COLOR_CLASS_INTERFACE, _edje_global_obj);
         efl_loop_unregister(efl_main_loop_get(), EFL_GFX_TEXT_CLASS_INTERFACE, 
_edje_global_obj);
         efl_loop_unregister(efl_main_loop_get(), EFL_GFX_SIZE_CLASS_INTERFACE, 
_edje_global_obj);
-        efl_del(_edje_global_obj);
+        efl_unref(_edje_global_obj);
         _edje_global_obj = NULL;
      }
 shutdown_efreet:
@@ -212,7 +212,7 @@ _edje_shutdown_core(void)
    efl_loop_unregister(efl_main_loop_get(), EFL_GFX_COLOR_CLASS_INTERFACE, 
_edje_global_obj);
    efl_loop_unregister(efl_main_loop_get(), EFL_GFX_TEXT_CLASS_INTERFACE, 
_edje_global_obj);
    efl_loop_unregister(efl_main_loop_get(), EFL_GFX_SIZE_CLASS_INTERFACE, 
_edje_global_obj);
-   efl_del(_edje_global_obj);
+   efl_unref(_edje_global_obj);
    _edje_global_obj = NULL;
 
    eina_cow_del(_edje_calc_params_map_cow);
@@ -286,17 +286,17 @@ _edje_class_shutdown(void)
 {
    if (_edje_color_class_member)
      {
-        efl_del(_edje_color_class_member);
+        efl_unref(_edje_color_class_member);
         _edje_color_class_member = NULL;
      }
    if (_edje_text_class_member)
      {
-        efl_del(_edje_text_class_member);
+        efl_unref(_edje_text_class_member);
         _edje_text_class_member = NULL;
      }
    if (_edje_size_class_member)
      {
-        efl_del(_edje_size_class_member);
+        efl_unref(_edje_size_class_member);
         _edje_size_class_member = NULL;
      }
 }
diff --git a/src/lib/edje/edje_multisense.c b/src/lib/edje/edje_multisense.c
index 0af6ec453b..0d99826d22 100644
--- a/src/lib/edje/edje_multisense.c
+++ b/src/lib/edje/edje_multisense.c
@@ -10,14 +10,14 @@ static Eina_Bool outfail = EINA_FALSE;
 static void
 _play_finished(void *data EINA_UNUSED, const Efl_Event *event)
 {
-   efl_del(event->object);
+   efl_unref(event->object);
 }
 
 static void
 _out_fail(void *data EINA_UNUSED, const Efl_Event *event)
 {
    outfail = EINA_TRUE;
-   efl_del(event->object);
+   efl_unref(event->object);
    out = NULL;
 }
 
@@ -199,15 +199,15 @@ _edje_multisense_internal_sound_sample_play(Edje *ed, 
const char *sample_name, c
              eet_data->vio.tell = eet_snd_file_tell;
              eet_data->offset = 0;
 
-             in = efl_add(ECORE_AUDIO_IN_SNDFILE_CLASS, efl_main_loop_get(), 
efl_name_set(efl_added, snd_id_str), ecore_audio_obj_in_speed_set(efl_added, 
speed), ecore_audio_obj_vio_set(efl_added, &eet_data->vio, eet_data, _free), 
efl_event_callback_add(efl_added, ECORE_AUDIO_IN_EVENT_IN_STOPPED, 
_play_finished, NULL));
+             in = efl_add_ref(ECORE_AUDIO_IN_SNDFILE_CLASS, NULL, 
efl_name_set(efl_added, snd_id_str), ecore_audio_obj_in_speed_set(efl_added, 
speed), ecore_audio_obj_vio_set(efl_added, &eet_data->vio, eet_data, _free), 
efl_event_callback_add(efl_added, ECORE_AUDIO_IN_EVENT_IN_STOPPED, 
_play_finished, NULL));
              if (!out)
                {
 
 # ifdef _WIN32
-                  out = efl_add(ECORE_AUDIO_OUT_WASAPI_CLASS, 
efl_main_loop_get(), efl_event_callback_add(efl_added, 
ECORE_AUDIO_OUT_WASAPI_EVENT_CONTEXT_FAIL, _out_fail, NULL));
+                  out = efl_add_ref(ECORE_AUDIO_OUT_WASAPI_CLASS, NULL, 
efl_event_callback_add(efl_added, ECORE_AUDIO_OUT_WASAPI_EVENT_CONTEXT_FAIL, 
_out_fail, NULL));
 # else
 #  ifdef HAVE_PULSE
-                  out = efl_add(ECORE_AUDIO_OUT_PULSE_CLASS, 
efl_main_loop_get(), efl_event_callback_add(efl_added, 
ECORE_AUDIO_OUT_PULSE_EVENT_CONTEXT_FAIL, _out_fail, NULL));
+                  out = efl_add_ref(ECORE_AUDIO_OUT_PULSE_CLASS, NULL, 
efl_event_callback_add(efl_added, ECORE_AUDIO_OUT_PULSE_EVENT_CONTEXT_FAIL, 
_out_fail, NULL));
 #  endif
 # endif
                   if (out) outs++;
@@ -227,7 +227,7 @@ _edje_multisense_internal_sound_sample_play(Edje *ed, const 
char *sample_name, c
 #  endif
 # endif
                     }
-                  efl_del(in);
+                  efl_unref(in);
                   return EINA_FALSE;
                }
              ret = ecore_audio_obj_out_input_attach(out, in);
@@ -240,7 +240,7 @@ _edje_multisense_internal_sound_sample_play(Edje *ed, const 
char *sample_name, c
                        complained = EINA_TRUE;
                        ERR("Could not attach input");
                     }
-                  efl_del(in);
+                  efl_unref(in);
                   return EINA_FALSE;
                }
           }
@@ -283,7 +283,7 @@ _edje_multisense_internal_sound_tone_play(Edje *ed, const 
char *tone_name, const
         tone = &ed->file->sound_dir->tones[i];
         if (!strcmp(tone->name, tone_name))
           {
-             in = efl_add(ECORE_AUDIO_IN_TONE_CLASS, efl_main_loop_get());
+             in = efl_add_ref(ECORE_AUDIO_IN_TONE_CLASS, NULL);
              efl_name_set(in, "tone");
              efl_key_data_set(in, ECORE_AUDIO_ATTR_TONE_FREQ, &tone->value);
              ecore_audio_obj_in_length_set(in, duration);
@@ -292,10 +292,10 @@ _edje_multisense_internal_sound_tone_play(Edje *ed, const 
char *tone_name, const
              if (!out)
                {
 # ifdef _WIN32
-                  out = efl_add(ECORE_AUDIO_OUT_WASAPI_CLASS, 
efl_main_loop_get(), efl_event_callback_add(efl_added, 
ECORE_AUDIO_OUT_WASAPI_EVENT_CONTEXT_FAIL, _out_fail, NULL));
+                  out = efl_add_ref(ECORE_AUDIO_OUT_WASAPI_CLASS, NULL, 
efl_event_callback_add(efl_added, ECORE_AUDIO_OUT_WASAPI_EVENT_CONTEXT_FAIL, 
_out_fail, NULL));
 # else
 #  ifdef HAVE_PULSE
-                  out = efl_add(ECORE_AUDIO_OUT_PULSE_CLASS, 
efl_main_loop_get(), efl_event_callback_add(efl_added, 
ECORE_AUDIO_OUT_PULSE_EVENT_CONTEXT_FAIL, _out_fail, NULL));
+                  out = efl_add_ref(ECORE_AUDIO_OUT_PULSE_CLASS, NULL, 
efl_event_callback_add(efl_added, ECORE_AUDIO_OUT_PULSE_EVENT_CONTEXT_FAIL, 
_out_fail, NULL));
 #  endif
 # endif
                   if (out) outs++;
@@ -305,7 +305,7 @@ _edje_multisense_internal_sound_tone_play(Edje *ed, const 
char *tone_name, const
              if (!ret)
                {
                   ERR("Could not attach input");
-                  efl_del(in);
+                  efl_unref(in);
                   return EINA_FALSE;
                }
           }
@@ -353,7 +353,7 @@ _edje_multisense_shutdown(void)
    if (out)
      {
         // XXX: this causes an abort inside of pa!!!!!
-        //efl_del(out);
+        //efl_unref(out);
         out = NULL;
         outs = 0;
      }
diff --git a/src/lib/elementary/efl_ui_view_list.c 
b/src/lib/elementary/efl_ui_view_list.c
index 8933bab7d4..abcb0d5008 100644
--- a/src/lib/elementary/efl_ui_view_list.c
+++ b/src/lib/elementary/efl_ui_view_list.c
@@ -674,7 +674,7 @@ _efl_ui_view_list_efl_object_finalize(Eo *obj, 
Efl_Ui_View_List_Data *pd)
 {
 
    if (!pd->factory)
-     pd->factory = efl_add(EFL_UI_LAYOUT_FACTORY_CLASS, efl_provider_find(obj, 
EFL_LOOP_CLASS));
+     pd->factory = efl_add_ref(EFL_UI_LAYOUT_FACTORY_CLASS, NULL);
 
    if(!pd->relayout)
      {
diff --git a/src/lib/elementary/elc_fileselector_button.c 
b/src/lib/elementary/elc_fileselector_button.c
index b1d263b6c8..ec59905675 100644
--- a/src/lib/elementary/elc_fileselector_button.c
+++ b/src/lib/elementary/elc_fileselector_button.c
@@ -202,7 +202,7 @@ _elm_fileselector_button_efl_canvas_group_group_add(Eo 
*obj, Elm_Fileselector_Bu
    if (path) priv->fsd.path = eina_stringshare_add(path);
    else priv->fsd.path = eina_stringshare_add("/");
 
-   priv->fsd.model = efl_add(EIO_MODEL_CLASS, efl_provider_find(obj, 
EFL_LOOP_CLASS), eio_model_path_set(efl_added, priv->fsd.path));
+   priv->fsd.model = efl_add_ref(EIO_MODEL_CLASS, NULL, 
eio_model_path_set(efl_added, priv->fsd.path));
 
    priv->fsd.expandable = _elm_config->fileselector_expand_enable;
    priv->inwin_mode = _elm_config->inwin_dialogs_enable;
diff --git a/src/lib/elementary/elm_atspi_bridge.c 
b/src/lib/elementary/elm_atspi_bridge.c
index 4cd74d5d5f..c430f33e59 100644
--- a/src/lib/elementary/elm_atspi_bridge.c
+++ b/src/lib/elementary/elm_atspi_bridge.c
@@ -4556,7 +4556,7 @@ _elm_atspi_bridge_init(void)
 {
    if (!_init_count)
      {
-        _instance = efl_add(ELM_ATSPI_BRIDGE_CLASS, efl_main_loop_get());
+        _instance = efl_add_ref(ELM_ATSPI_BRIDGE_CLASS, NULL);
         _init_count = 1;
      }
 }
@@ -4572,7 +4572,7 @@ _elm_atspi_bridge_shutdown(void)
 {
    if (_init_count)
      {
-        efl_del(_instance);
+        efl_unref(_instance);
         _init_count = 0;
      }
    _efl_access_shutdown();
diff --git a/src/lib/elementary/elm_sys_notify.c 
b/src/lib/elementary/elm_sys_notify.c
index a993a8cc3a..f7da6fe2b5 100644
--- a/src/lib/elementary/elm_sys_notify.c
+++ b/src/lib/elementary/elm_sys_notify.c
@@ -228,7 +228,7 @@ _elm_unneed_sys_notify(void)
    if (manager)
      {
         elm_obj_sys_notify_servers_set(manager, ELM_SYS_NOTIFY_SERVER_NONE);
-        efl_del(manager);
+        efl_unref(manager);
      }
 }
 
diff --git a/src/tests/ecore/ecore_test_ecore_audio.c 
b/src/tests/ecore/ecore_test_ecore_audio.c
index 69bbaf66ed..0537014631 100644
--- a/src/tests/ecore/ecore_test_ecore_audio.c
+++ b/src/tests/ecore/ecore_test_ecore_audio.c
@@ -57,14 +57,14 @@ EFL_START_TEST(ecore_test_ecore_audio_obj_pulse)
    Eina_Bool ret = EINA_FALSE;
    Eina_Bool pulse_context_failed = EINA_FALSE;
 
-   in = efl_add(ECORE_AUDIO_IN_SNDFILE_CLASS, efl_main_loop_get());
+   in = efl_add_ref(ECORE_AUDIO_IN_SNDFILE_CLASS, NULL);
    fail_if(!in);
 
    efl_name_set(in, "sample.wav");
    ret = ecore_audio_obj_source_set(in, TESTS_SRC_DIR"/sample.wav");
    fail_if(!ret);
 
-   out = efl_add(ECORE_AUDIO_OUT_PULSE_CLASS, efl_main_loop_get());
+   out = efl_add_ref(ECORE_AUDIO_OUT_PULSE_CLASS, NULL);
    fail_if(!out);
 
    ecore_timer_add(1.8, _seek_vol, in);
@@ -78,8 +78,8 @@ EFL_START_TEST(ecore_test_ecore_audio_obj_pulse)
    ecore_main_loop_begin();
    fail_if(pulse_context_failed);
 
-   efl_del(out);
-   efl_del(in);
+   efl_unref(out);
+   efl_unref(in);
 }
 EFL_END_TEST
 #endif
@@ -96,7 +96,7 @@ static Eina_Bool
 _idle_del(void *data)
 {
    Eo *in = data;
-   efl_del(in);
+   efl_unref(in);
    ecore_idler_add(_quit, NULL);
 
    return EINA_FALSE;
@@ -108,12 +108,12 @@ EFL_START_TEST(ecore_test_ecore_audio_cleanup)
    int freq = 1000;
    Eina_Bool ret = EINA_FALSE;
 
-   in = efl_add(ECORE_AUDIO_IN_TONE_CLASS, efl_main_loop_get());
+   in = efl_add_ref(ECORE_AUDIO_IN_TONE_CLASS, NULL);
    fail_if(!in);
    efl_key_data_set(in, ECORE_AUDIO_ATTR_TONE_FREQ, &freq);
    ecore_audio_obj_in_length_set(in, 2);
 
-   out = efl_add(ECORE_AUDIO_OUT_SNDFILE_CLASS, efl_main_loop_get());
+   out = efl_add_ref(ECORE_AUDIO_OUT_SNDFILE_CLASS, NULL);
    fail_if(!out);
    ret = ecore_audio_obj_format_set(out, ECORE_AUDIO_FORMAT_OGG);
    fail_if(!ret);
@@ -124,7 +124,6 @@ EFL_START_TEST(ecore_test_ecore_audio_cleanup)
    fail_if(!ret);
 
    ecore_idler_add(_idle_del, in);
-   ecore_idler_add(_idle_del, out);
 
    ecore_main_loop_begin();
 
@@ -140,7 +139,7 @@ EFL_START_TEST(ecore_test_ecore_audio_obj_tone)
    Eina_Bool ret;
    char *tmp;
 
-   in = efl_add(ECORE_AUDIO_IN_TONE_CLASS, efl_main_loop_get());
+   in = efl_add_ref(ECORE_AUDIO_IN_TONE_CLASS, NULL);
    fail_if(!in);
 
    efl_name_set(in, "tone");
@@ -198,7 +197,7 @@ EFL_START_TEST(ecore_test_ecore_audio_obj_tone)
    len = ecore_audio_obj_in_remaining_get(in);
    fail_if(len != 1.0);
 
-   out = efl_add(ECORE_AUDIO_OUT_SNDFILE_CLASS, efl_main_loop_get());
+   out = efl_add_ref(ECORE_AUDIO_OUT_SNDFILE_CLASS, NULL);
    fail_if(!out);
 
    efl_name_set(out, "tmp.wav");
@@ -215,8 +214,8 @@ EFL_START_TEST(ecore_test_ecore_audio_obj_tone)
 
    ecore_main_loop_begin();
 
-   efl_del(in);
-   efl_del(out);
+   efl_unref(in);
+   efl_unref(out);
 
    //TODO: Compare and fail
    ecore_file_remove(TESTS_BUILD_DIR"/tmp.wav");
@@ -232,7 +231,7 @@ EFL_START_TEST(ecore_test_ecore_audio_obj_sndfile)
    Ecore_Audio_Format fmt;
    const char *src;
 
-   in = efl_add(ECORE_AUDIO_IN_SNDFILE_CLASS, efl_main_loop_get());
+   in = efl_add_ref(ECORE_AUDIO_IN_SNDFILE_CLASS, NULL);
    fail_if(!in);
 
    fmt = ecore_audio_obj_format_get(in);
@@ -278,7 +277,7 @@ EFL_START_TEST(ecore_test_ecore_audio_obj_sndfile)
    len = ecore_audio_obj_in_seek(in, -1.5, SEEK_END);
    fail_if(fabs(rem - 1 - len) > 0.6);
 
-   out = efl_add(ECORE_AUDIO_OUT_SNDFILE_CLASS, efl_main_loop_get());
+   out = efl_add_ref(ECORE_AUDIO_OUT_SNDFILE_CLASS, NULL);
    fail_if(!out);
 
    efl_name_set(out, "tmp.wav");
@@ -305,8 +304,8 @@ EFL_START_TEST(ecore_test_ecore_audio_obj_sndfile)
 
    ecore_main_loop_begin();
 
-   efl_del(in);
-   efl_del(out);
+   efl_unref(in);
+   efl_unref(out);
 
    //TODO: Compare and fail
    ecore_file_remove(TESTS_BUILD_DIR"/tmp.wav");
@@ -319,9 +318,9 @@ EFL_START_TEST(ecore_test_ecore_audio_obj_in_out)
   Eina_List *in3;
   Eina_Bool attached;
 
-  Eo *in = efl_add(ECORE_AUDIO_IN_CLASS, efl_main_loop_get());
-  Eo *in2 = efl_add(ECORE_AUDIO_IN_CLASS, efl_main_loop_get());
-  Eo *out = efl_add(ECORE_AUDIO_OUT_CLASS, efl_main_loop_get());
+  Eo *in = efl_add_ref(ECORE_AUDIO_IN_CLASS, NULL);
+  Eo *in2 = efl_add_ref(ECORE_AUDIO_IN_CLASS, NULL);
+  Eo *out = efl_add_ref(ECORE_AUDIO_OUT_CLASS, NULL);
 
   fail_if(!in);
   fail_if(!in2);
@@ -358,20 +357,20 @@ EFL_START_TEST(ecore_test_ecore_audio_obj_in_out)
   fail_if(eina_list_count(in3) != 2);
   fail_if(eina_list_data_get(in3) != in);
 
-  efl_del(in2);
+  efl_unref(in2);
 
   in3 = ecore_audio_obj_out_inputs_get(out);
 
   fail_if(eina_list_count(in3) != 1);
   fail_if(eina_list_data_get(in3) != in);
 
-  efl_del(out);
+  efl_unref(out);
 
   out2 = ecore_audio_obj_in_output_get(in);
 
   fail_if(out2);
 
-  efl_del(in);
+  efl_unref(in);
 }
 EFL_END_TEST
 
@@ -417,10 +416,10 @@ EFL_START_TEST(ecore_test_ecore_audio_obj_vio)
 {
   Eo *in, *out;
 
-  in = efl_add(ECORE_AUDIO_IN_CLASS, efl_main_loop_get());
+  in = efl_add_ref(ECORE_AUDIO_IN_CLASS, NULL);
   fail_if(!in);
 
-  out = efl_add(ECORE_AUDIO_OUT_CLASS, efl_main_loop_get());
+  out = efl_add_ref(ECORE_AUDIO_OUT_CLASS, NULL);
   fail_if(!out);
 
   ecore_audio_obj_vio_set(in, &in_vio, NULL, NULL);
@@ -430,8 +429,8 @@ EFL_START_TEST(ecore_test_ecore_audio_obj_vio)
 
   ecore_main_loop_begin();
 
-  efl_del(out);
-  efl_del(in);
+  efl_unref(out);
+  efl_unref(in);
 }
 EFL_END_TEST
 
@@ -455,7 +454,7 @@ EFL_START_TEST(ecore_test_ecore_audio_obj_in)
   Ecore_Audio_Vio vio;
   Eina_Bool freed = EINA_FALSE;
 
-  Eo *in = efl_add(ECORE_AUDIO_IN_CLASS, efl_main_loop_get());
+  Eo *in = efl_add_ref(ECORE_AUDIO_IN_CLASS, NULL);
 
   fail_if(!in);
 
@@ -530,7 +529,7 @@ EFL_START_TEST(ecore_test_ecore_audio_obj_in)
       fail_if(buf[i] != 0x00);
   }
 
-  efl_del(in);
+  efl_unref(in);
 }
 EFL_END_TEST
 
@@ -542,10 +541,10 @@ EFL_START_TEST(ecore_test_ecore_audio_obj)
   double volume;
   Eo *objs[2], *obj;
 
-  objs[0] = efl_add(ECORE_AUDIO_IN_CLASS, efl_main_loop_get());
+  objs[0] = efl_add_ref(ECORE_AUDIO_IN_CLASS, NULL);
   fail_if(!objs[0]);
 
-  objs[1] = efl_add(ECORE_AUDIO_OUT_CLASS, efl_main_loop_get());
+  objs[1] = efl_add_ref(ECORE_AUDIO_OUT_CLASS, NULL);
   fail_if(!objs[1]);
 
   for (i=0; i<2; i++) {
@@ -578,7 +577,7 @@ EFL_START_TEST(ecore_test_ecore_audio_obj)
     volume = ecore_audio_obj_volume_get(obj);
     fail_if(volume != 0.5);
 
-    efl_del(obj);
+    efl_unref(obj);
   }
 
 }
diff --git a/src/tests/ecore/efl_app_test_promise.c 
b/src/tests/ecore/efl_app_test_promise.c
index 3b9b8ab6aa..fde88793b4 100644
--- a/src/tests/ecore/efl_app_test_promise.c
+++ b/src/tests/ecore/efl_app_test_promise.c
@@ -872,7 +872,7 @@ EFL_START_TEST(efl_test_promise_eo)
    fail_if(!ecore_init());
 
    //Use a random object..
-   obj = efl_add(EFL_IO_BUFFER_CLASS, efl_main_loop_get());
+   obj = efl_add_ref(EFL_IO_BUFFER_CLASS, NULL);
    fail_if(!obj);
    efl_key_data_set(obj, "free_called", &free_called);
    f = eina_future_chain(_int_future_get(),
@@ -931,7 +931,7 @@ EFL_START_TEST(efl_test_promise_eo_link)
    fail_if(!ecore_init());
 
    //Use a random object..
-   obj = efl_add(EFL_IO_BUFFER_CLASS, efl_main_loop_get());
+   obj = efl_add_ref(EFL_IO_BUFFER_CLASS, NULL);
    fail_if(!obj);
 
    efl_key_data_set(obj, "err_called", &err_called);
diff --git a/src/tests/ecore_con/ecore_con_test_efl_net_ip_address.c 
b/src/tests/ecore_con/ecore_con_test_efl_net_ip_address.c
index b44bd0bffa..bc4fa980a5 100644
--- a/src/tests/ecore_con/ecore_con_test_efl_net_ip_address.c
+++ b/src/tests/ecore_con/ecore_con_test_efl_net_ip_address.c
@@ -282,29 +282,29 @@ 
EFL_START_TEST(ecore_test_efl_net_ip_address_ipv4_manual_ok)
 
    addr.sin_port = htons(12345);
    addr.sin_addr.s_addr = htonl(0xabcdefafU);
-   o = efl_add(EFL_NET_IP_ADDRESS_CLASS, efl_main_loop_get(),
+   o = efl_add_ref(EFL_NET_IP_ADDRESS_CLASS, NULL,
                efl_net_ip_address_family_set(efl_added, AF_INET),
                efl_net_ip_address_port_set(efl_added, ntohs(addr.sin_port)),
                efl_net_ip_address_set(efl_added, slice));
    _ipv4_check(o, &addr);
-   efl_del(o);
+   efl_unref(o);
 
    addr.sin_port = htons(8081);
    addr.sin_addr.s_addr = htonl(0);
-   o = efl_add(EFL_NET_IP_ADDRESS_CLASS, efl_main_loop_get(),
+   o = efl_add_ref(EFL_NET_IP_ADDRESS_CLASS, NULL,
                efl_net_ip_address_family_set(efl_added, AF_INET),
                efl_net_ip_address_port_set(efl_added, ntohs(addr.sin_port)),
                efl_net_ip_address_set(efl_added, slice));
    _ipv4_check(o, &addr);
-   efl_del(o);
+   efl_unref(o);
 
    addr.sin_port = htons(0);
    addr.sin_addr.s_addr = htonl(0x12345678);
-   o = efl_add(EFL_NET_IP_ADDRESS_CLASS, efl_main_loop_get(),
+   o = efl_add_ref(EFL_NET_IP_ADDRESS_CLASS, NULL,
                efl_net_ip_address_family_set(efl_added, AF_INET),
                efl_net_ip_address_set(efl_added, slice));
    _ipv4_check(o, &addr);
-   efl_del(o);
+   efl_unref(o);
 }
 EFL_END_TEST
 
@@ -319,46 +319,46 @@ 
EFL_START_TEST(ecore_test_efl_net_ip_address_ipv4_manual_fail)
    Eo *o;
 
    TRAP_ERRORS_BEGIN(eina_safety, ERR, "safety check failed: 
pd->addr.sa_family == 0 is true");
-   o = efl_add(EFL_NET_IP_ADDRESS_CLASS, efl_main_loop_get());
+   o = efl_add_ref(EFL_NET_IP_ADDRESS_CLASS, NULL);
    ck_assert_ptr_eq(o, NULL);
    TRAP_ERRORS_FINISH(1);
 
    TRAP_ERRORS_BEGIN(eina_safety, ERR, NULL);
-   o = efl_add(EFL_NET_IP_ADDRESS_CLASS, efl_main_loop_get(),
+   o = efl_add_ref(EFL_NET_IP_ADDRESS_CLASS, NULL,
                efl_net_ip_address_family_set(efl_added, 12345));
    ck_assert_ptr_eq(o, NULL);
    TRAP_ERRORS_FINISH(2);
 
    TRAP_ERRORS_BEGIN(eina_safety, ERR, "safety check failed: 
pd->addr.sa_family == 0 is true");
-   o = efl_add(EFL_NET_IP_ADDRESS_CLASS, efl_main_loop_get(),
+   o = efl_add_ref(EFL_NET_IP_ADDRESS_CLASS, NULL,
                efl_net_ip_address_set(efl_added, wrong_slice));
    ck_assert_ptr_eq(o, NULL);
    TRAP_ERRORS_FINISH(2);
 
    TRAP_ERRORS_BEGIN(eina_safety, ERR, "safety check failed: 
pd->addr.sa_family == 0 is true");
-   o = efl_add(EFL_NET_IP_ADDRESS_CLASS, efl_main_loop_get(),
+   o = efl_add_ref(EFL_NET_IP_ADDRESS_CLASS, NULL,
                efl_net_ip_address_port_set(efl_added, 1234));
    ck_assert_ptr_eq(o, NULL);
    TRAP_ERRORS_FINISH(2);
 
    TRAP_ERRORS_BEGIN(eina_safety, ERR, "safety check failed: 
pd->addr.sa_family == 0 is true");
-   o = efl_add(EFL_NET_IP_ADDRESS_CLASS, efl_main_loop_get(),
+   o = efl_add_ref(EFL_NET_IP_ADDRESS_CLASS, NULL,
                efl_net_ip_address_port_set(efl_added, 1234),
                efl_net_ip_address_set(efl_added, wrong_slice));
    ck_assert_ptr_eq(o, NULL);
    TRAP_ERRORS_FINISH(3);
 
    TRAP_ERRORS_BEGIN(eina_safety, ERR, "safety check failed: rw_slice.len != 
address.len is true");
-   o = efl_add(EFL_NET_IP_ADDRESS_CLASS, efl_main_loop_get(),
+   o = efl_add_ref(EFL_NET_IP_ADDRESS_CLASS, NULL,
                efl_net_ip_address_family_set(efl_added, AF_INET),
                efl_net_ip_address_set(efl_added, wrong_slice));
    _ipv4_check(o, &addr);
-   efl_del(o);
+   efl_unref(o);
    TRAP_ERRORS_FINISH(1);
 
    addr.sin_port = htons(12345);
    addr.sin_addr.s_addr = htonl(0xabcdefafU);
-   o = efl_add(EFL_NET_IP_ADDRESS_CLASS, efl_main_loop_get(),
+   o = efl_add_ref(EFL_NET_IP_ADDRESS_CLASS, NULL,
                efl_net_ip_address_family_set(efl_added, AF_INET),
                efl_net_ip_address_port_set(efl_added, ntohs(addr.sin_port)),
                efl_net_ip_address_set(efl_added, slice));
@@ -388,7 +388,7 @@ 
EFL_START_TEST(ecore_test_efl_net_ip_address_ipv4_manual_fail)
    efl_net_ip_address_set(o, slice);
    TRAP_ERRORS_FINISH(1);
 
-   efl_del(o);
+   efl_unref(o);
 }
 EFL_END_TEST
 
@@ -713,21 +713,21 @@ 
EFL_START_TEST(ecore_test_efl_net_ip_address_ipv6_manual_ok)
 
    addr.sin6_port = htons(12345);
    _ipv6_set(&addr, 1, 2, 3, 4, 5, 6, 7, 8);
-   o = efl_add(EFL_NET_IP_ADDRESS_CLASS, efl_main_loop_get(),
+   o = efl_add_ref(EFL_NET_IP_ADDRESS_CLASS, NULL,
                efl_net_ip_address_family_set(efl_added, AF_INET6),
                efl_net_ip_address_port_set(efl_added, ntohs(addr.sin6_port)),
                efl_net_ip_address_set(efl_added, slice));
    _ipv6_check(o, &addr);
-   efl_del(o);
+   efl_unref(o);
 
    addr.sin6_port = htons(8081);
    _ipv6_set(&addr, 0, 0, 0, 0, 0, 0, 0, 0);
-   o = efl_add(EFL_NET_IP_ADDRESS_CLASS, efl_main_loop_get(),
+   o = efl_add_ref(EFL_NET_IP_ADDRESS_CLASS, NULL,
                efl_net_ip_address_family_set(efl_added, AF_INET6),
                efl_net_ip_address_port_set(efl_added, ntohs(addr.sin6_port)),
                efl_net_ip_address_set(efl_added, slice));
    _ipv6_check(o, &addr);
-   efl_del(o);
+   efl_unref(o);
 
 }
 EFL_END_TEST
@@ -745,16 +745,16 @@ 
EFL_START_TEST(ecore_test_efl_net_ip_address_ipv6_manual_fail)
    /* generic errors checked at ecore_test_efl_net_ip_address_ipv4_manual_fail 
*/
 
    TRAP_ERRORS_BEGIN(eina_safety, ERR, "safety check failed: rw_slice.len != 
address.len is true");
-   o = efl_add(EFL_NET_IP_ADDRESS_CLASS, efl_main_loop_get(),
+   o = efl_add_ref(EFL_NET_IP_ADDRESS_CLASS, NULL,
                efl_net_ip_address_family_set(efl_added, AF_INET6),
                efl_net_ip_address_set(efl_added, wrong_slice));
    _ipv6_check(o, &addr);
-   efl_del(o);
+   efl_unref(o);
    TRAP_ERRORS_FINISH(1);
 
    addr.sin6_port = htons(12345);
    _ipv6_set(&addr, 0, 0, 0, 0, 0, 0, 0, 1);
-   o = efl_add(EFL_NET_IP_ADDRESS_CLASS, efl_main_loop_get(),
+   o = efl_add_ref(EFL_NET_IP_ADDRESS_CLASS, NULL,
                efl_net_ip_address_family_set(efl_added, AF_INET6),
                efl_net_ip_address_port_set(efl_added, ntohs(addr.sin6_port)),
                efl_net_ip_address_set(efl_added, slice));
@@ -784,7 +784,7 @@ 
EFL_START_TEST(ecore_test_efl_net_ip_address_ipv6_manual_fail)
    efl_net_ip_address_set(o, slice);
    TRAP_ERRORS_FINISH(1);
 
-   efl_del(o);
+   efl_unref(o);
 
 }
 EFL_END_TEST
diff --git a/src/tests/efl/efl_test_model_composite.c 
b/src/tests/efl/efl_test_model_composite.c
index 7e9932d02d..bbc21bfac2 100644
--- a/src/tests/efl/efl_test_model_composite.c
+++ b/src/tests/efl/efl_test_model_composite.c
@@ -108,7 +108,7 @@ EFL_START_TEST(efl_test_model_composite_boolean)
 
    eina_value_setup(&v, EINA_VALUE_TYPE_INT);
 
-   base_model = efl_add(EFL_MODEL_ITEM_CLASS, efl_main_loop_get());
+   base_model = efl_add_ref(EFL_MODEL_ITEM_CLASS, efl_main_loop_get());
    ck_assert(!!base_model);
 
    for (i = 0; i < child_number; ++i)
@@ -119,7 +119,7 @@ EFL_START_TEST(efl_test_model_composite_boolean)
         efl_model_property_set(child, "test_p_int", &v);
      }
 
-   model = efl_add(EFL_MODEL_COMPOSITE_BOOLEAN_CLASS, efl_main_loop_get(),
+   model = efl_add_ref(EFL_MODEL_COMPOSITE_BOOLEAN_CLASS, efl_main_loop_get(),
                   efl_ui_view_model_set(efl_added, base_model),
                   efl_model_composite_boolean_add(efl_added, "test_p_true", 
EINA_TRUE),
                   efl_model_composite_boolean_add(efl_added, "test_p_false", 
EINA_FALSE));
@@ -151,7 +151,7 @@ EFL_START_TEST(efl_test_model_composite_selection)
 
    eina_value_setup(&v, EINA_VALUE_TYPE_INT);
 
-   base_model = efl_add(EFL_MODEL_ITEM_CLASS, efl_main_loop_get());
+   base_model = efl_add_ref(EFL_MODEL_ITEM_CLASS, efl_main_loop_get());
    ck_assert(!!base_model);
 
    for (i = 0; i < child_number; ++i)
@@ -162,7 +162,7 @@ EFL_START_TEST(efl_test_model_composite_selection)
         efl_model_property_set(child, "test_p_int", &v);
      }
 
-   model = efl_add(EFL_MODEL_COMPOSITE_SELECTION_CLASS, efl_main_loop_get(),
+   model = efl_add_ref(EFL_MODEL_COMPOSITE_SELECTION_CLASS, 
efl_main_loop_get(),
                    efl_ui_view_model_set(efl_added, base_model));
    ck_assert(!!model);
    future = efl_model_property_set(model, "selected", eina_value_int_new(2));
diff --git a/src/tests/efl/efl_test_model_container.c 
b/src/tests/efl/efl_test_model_container.c
index 50a2fd401a..0ccd34167a 100644
--- a/src/tests/efl/efl_test_model_container.c
+++ b/src/tests/efl/efl_test_model_container.c
@@ -89,7 +89,7 @@ EFL_START_TEST(efl_test_model_container_values)
         cmp_str[i] = strdup(base_str[i]);
      }
 
-   model = efl_add(EFL_MODEL_CONTAINER_CLASS, efl_main_loop_get());
+   model = efl_add_ref(EFL_MODEL_CONTAINER_CLASS, NULL);
 
    efl_model_container_child_property_add(model, "test_p_int", 
EINA_VALUE_TYPE_INT,
                                           
eina_carray_iterator_new((void**)cmp_int));
diff --git a/src/tests/efl_mono/libefl_mono_native_test.c 
b/src/tests/efl_mono/libefl_mono_native_test.c
index 346ef2cb2c..3f5562c749 100644
--- a/src/tests/efl_mono/libefl_mono_native_test.c
+++ b/src/tests/efl_mono/libefl_mono_native_test.c
@@ -88,7 +88,7 @@ char **_new_str_ref(const char* str)
 static
 Test_Numberwrapper *_new_obj(int n)
 {
-   return efl_add(TEST_NUMBERWRAPPER_CLASS, efl_main_loop_get(), 
test_numberwrapper_number_set(efl_added, n));
+   return efl_add_ref(TEST_NUMBERWRAPPER_CLASS, NULL, 
test_numberwrapper_number_set(efl_added, n));
 }
 
 static
diff --git a/src/tests/eio/eio_test_sentry.c b/src/tests/eio/eio_test_sentry.c
index d2a368438c..f11d670e6e 100644
--- a/src/tests/eio/eio_test_sentry.c
+++ b/src/tests/eio/eio_test_sentry.c
@@ -145,7 +145,7 @@ EFL_START_TEST(eio_test_sentry_add_and_remove)
    _create_directory((void*)filename);
 
    //monitor directory
-   sentry = efl_add(EIO_SENTRY_CLASS, efl_main_loop_get());
+   sentry = efl_add_ref(EIO_SENTRY_CLASS, NULL);
    fail_if(!eio_sentry_add(sentry, filename));
 
    eio_sentry_remove(sentry, filename);
@@ -166,7 +166,7 @@ EFL_START_TEST(eio_test_sentry_add_remove_add)
    _create_directory((void*)filename);
 
    //monitor directory
-   sentry = efl_add(EIO_SENTRY_CLASS, efl_main_loop_get());
+   sentry = efl_add_ref(EIO_SENTRY_CLASS, NULL);
    fail_if(!eio_sentry_add(sentry, filename));
    eio_sentry_remove(sentry, filename);
 
@@ -191,7 +191,7 @@ EFL_START_TEST(eio_test_sentry_add_add_remove_remove)
    _create_directory((void*)filename1);
    _create_directory((void*)filename2);
 
-   sentry = efl_add(EIO_SENTRY_CLASS, efl_main_loop_get());
+   sentry = efl_add_ref(EIO_SENTRY_CLASS, NULL);
 
    //monitor directory
    fail_if(!eio_sentry_add(sentry, filename1));
@@ -221,7 +221,7 @@ 
EFL_START_TEST(eio_test_sentry_directory_file_created_notify)
    Eo* sentry;
 
    filename = 
eina_stringshare_printf("%s/eio_test_sentry_directory_file_created_notify", 
dirname);
-   sentry = efl_add(EIO_SENTRY_CLASS, efl_main_loop_get());
+   sentry = efl_add_ref(EIO_SENTRY_CLASS, NULL);
 
    //monitor directory
    fail_if(!eio_sentry_add(sentry, dirname));
@@ -245,7 +245,7 @@ 
EFL_START_TEST(eio_test_sentry_directory_file_deleted_notify)
 
    filename = 
eina_stringshare_printf("%s/eio_test_sentry_directory_file_deleted_notify", 
dirname);
    _create_file((void*)filename);
-   sentry = efl_add(EIO_SENTRY_CLASS, efl_main_loop_get());
+   sentry = efl_add_ref(EIO_SENTRY_CLASS, NULL);
 
    //monitor directory
    fail_if(!eio_sentry_add(sentry, dirname));
@@ -269,7 +269,7 @@ 
EFL_START_TEST(eio_test_sentry_directory_file_modified_notify)
 
    filename = 
eina_stringshare_printf("%s/eio_test_sentry_directory_file_modified_notify", 
dirname);
    _create_file((void*)filename);
-   sentry = efl_add(EIO_SENTRY_CLASS, efl_main_loop_get());
+   sentry = efl_add_ref(EIO_SENTRY_CLASS, NULL);
 
    //monitor directory
    fail_if(!eio_sentry_add(sentry, dirname));
@@ -294,7 +294,7 @@ EFL_START_TEST(eio_test_sentry_directory_file_closed_notify)
 
    filename = 
eina_stringshare_printf("%s/eio_test_sentry_directory_file_closed_notify", 
dirname);
    _create_file((void*)filename);
-   sentry = efl_add(EIO_SENTRY_CLASS, efl_main_loop_get());
+   sentry = efl_add_ref(EIO_SENTRY_CLASS, NULL);
 
    //monitor directory
    fail_if(!eio_sentry_add(sentry, dirname));
@@ -316,7 +316,7 @@ 
EFL_START_TEST(eio_test_sentry_directory_directory_created_notify)
    Eo *sentry;
 
    filename = 
eina_stringshare_printf("%s/eio_test_sentry_directory_directory_created_notify",
 dirname);
-   sentry = efl_add(EIO_SENTRY_CLASS, efl_main_loop_get());
+   sentry = efl_add_ref(EIO_SENTRY_CLASS, NULL);
 
    //monitor directory
    fail_if(!eio_sentry_add(sentry, dirname));
@@ -340,7 +340,7 @@ 
EFL_START_TEST(eio_test_sentry_directory_directory_deleted_notify)
 
    filename = 
eina_stringshare_printf("%s/eio_test_sentry_directory_directory_deleted_notify",
 dirname);
    _create_directory((void*)filename);
-   sentry = efl_add(EIO_SENTRY_CLASS, efl_main_loop_get());
+   sentry = efl_add_ref(EIO_SENTRY_CLASS, NULL);
 
    //monitor directory
    fail_if(!eio_sentry_add(sentry, dirname));
@@ -364,7 +364,7 @@ 
EFL_START_TEST(eio_test_sentry_directory_directory_modified_notify)
 
    filename = 
eina_stringshare_printf("%s/eio_test_sentry_directory_directory_modified_notify",
 dirname);
    _create_directory((void*)filename);
-   sentry = efl_add(EIO_SENTRY_CLASS, efl_main_loop_get());
+   sentry = efl_add_ref(EIO_SENTRY_CLASS, NULL);
 
    //monitor directory
    fail_if(!eio_sentry_add(sentry, dirname));
@@ -383,7 +383,7 @@ EFL_END_TEST
 EFL_START_TEST(eio_test_sentry_directory_directory_self_deleted_notify)
 {
    Eina_Tmpstr *dirname = _common_init();
-   Eo *sentry = efl_add(EIO_SENTRY_CLASS, efl_main_loop_get());
+   Eo *sentry = efl_add_ref(EIO_SENTRY_CLASS, NULL);
 
    //monitor directory
    fail_if(!eio_sentry_add(sentry, dirname));
@@ -409,7 +409,7 @@ EFL_START_TEST(eio_test_sentry_file_file_modified_notify)
 
    filename = eina_stringshare_printf("%s/filecreated", dirname);
    _create_file((void*)filename);
-   sentry = efl_add(EIO_SENTRY_CLASS, efl_main_loop_get());
+   sentry = efl_add_ref(EIO_SENTRY_CLASS, NULL);
 
    //monitor file
    fail_if(!eio_sentry_add(sentry, filename));
@@ -434,7 +434,7 @@ 
EFL_START_TEST(eio_test_sentry_file_file_attrib_modified_notify)
 
    filename = 
eina_stringshare_printf("%s/eio_test_sentry_file_file_attrib_modified_notify", 
dirname);
    _create_file((void*)filename);
-   sentry = efl_add(EIO_SENTRY_CLASS, efl_main_loop_get());
+   sentry = efl_add_ref(EIO_SENTRY_CLASS, NULL);
 
    //monitor file
    fail_if(!eio_sentry_add(sentry, filename));
@@ -459,7 +459,7 @@ EFL_START_TEST(eio_test_sentry_file_file_closed_notify)
 
    filename = 
eina_stringshare_printf("%s/eio_test_sentry_file_file_closed_notify", dirname);
    _create_file((void*)filename);
-   sentry = efl_add(EIO_SENTRY_CLASS, efl_main_loop_get());
+   sentry = efl_add_ref(EIO_SENTRY_CLASS, NULL);
 
    //monitor file
    fail_if(!eio_sentry_add(sentry, dirname));
@@ -482,7 +482,7 @@ 
EFL_START_TEST(eio_test_sentry_file_file_self_deleted_notify)
 
    filename = 
eina_stringshare_printf("%s/eio_test_sentry_file_file_self_deleted_notify", 
dirname);
    _create_file((void*)filename);
-   sentry = efl_add(EIO_SENTRY_CLASS, efl_main_loop_get());
+   sentry = efl_add_ref(EIO_SENTRY_CLASS, NULL);
 
    //monitor file
    fail_if(!eio_sentry_add(sentry, filename));
@@ -508,7 +508,7 @@ EFL_START_TEST(eio_test_sentry_two_monitors_one_event)
 
    eina_file_mkdtemp("checkFileCreationXXXXXX", &dirname2);
    filename = 
eina_stringshare_printf("%s/eio_test_sentry_two_monitors_one_event", dirname);
-   sentry = efl_add(EIO_SENTRY_CLASS, efl_main_loop_get());
+   sentry = efl_add_ref(EIO_SENTRY_CLASS, NULL);
 
    //monitor directory
    fail_if(!eio_sentry_add(sentry, dirname));
@@ -537,7 +537,7 @@ 
EFL_START_TEST(eio_test_sentry_two_monitors_one_removed_one_event)
 
    eina_file_mkdtemp("checkFileCreationXXXXXX", &dirname2);
    filename = 
eina_stringshare_printf("%s/eio_test_sentry_two_monitors_one_removed", dirname);
-   sentry = efl_add(EIO_SENTRY_CLASS, efl_main_loop_get());
+   sentry = efl_add_ref(EIO_SENTRY_CLASS, NULL);
 
    //monitor directory
    fail_if(!eio_sentry_add(sentry, dirname2));
@@ -571,7 +571,7 @@ 
EFL_START_TEST(eio_test_sentry_two_monitors_one_removed_no_event)
 
    eina_file_mkdtemp("checkFileCreationXXXXXX", &dirname2);
    filename = 
eina_stringshare_printf("%s/eio_test_sentry_two_monitors_one_removed", dirname);
-   sentry = efl_add(EIO_SENTRY_CLASS, efl_main_loop_get());
+   sentry = efl_add_ref(EIO_SENTRY_CLASS, NULL);
 
    //monitor directory
    fail_if(!eio_sentry_add(sentry, dirname));
@@ -602,7 +602,7 @@ EFL_START_TEST(eio_test_sentry_two_files_in_same_directory)
    filename2 = 
eina_stringshare_printf("%s/eio_test_sentry_two_files_in_same_directory_2", 
dirname);
    _create_file((void*)filename);
    _create_file((void*)filename2);
-   sentry = efl_add(EIO_SENTRY_CLASS, efl_main_loop_get());
+   sentry = efl_add_ref(EIO_SENTRY_CLASS, NULL);
 
    //monitor file
    fail_if(!eio_sentry_add(sentry,filename));
@@ -632,7 +632,7 @@ 
EFL_START_TEST(eio_test_sentry_two_files_in_same_directory_one_removed)
    filename2 = 
eina_stringshare_printf("%s/eio_test_sentry_two_files_in_same_directory_one_removed_2",
 dirname);
    _create_file((void*)filename);
    _create_file((void*)filename2);
-   sentry = efl_add(EIO_SENTRY_CLASS, efl_main_loop_get());
+   sentry = efl_add_ref(EIO_SENTRY_CLASS, NULL);
 
    //monitor file
    fail_if(!eio_sentry_add(sentry,filename));
diff --git a/src/tests/elementary/elm_test_atspi.c 
b/src/tests/elementary/elm_test_atspi.c
index 1ff61da3dc..0cb3b72ff1 100644
--- a/src/tests/elementary/elm_test_atspi.c
+++ b/src/tests/elementary/elm_test_atspi.c
@@ -28,7 +28,7 @@ void generate_app(void)
 
 EFL_START_TEST (test_efl_access_app_obj_name_get)
 {
-   Eo* root = efl_add(ELM_ATSPI_APP_OBJECT_CLASS, efl_main_loop_get());
+   Eo* root = efl_add_ref(ELM_ATSPI_APP_OBJECT_CLASS, NULL);
 
    ck_assert(root != NULL);
 
@@ -40,7 +40,7 @@ EFL_START_TEST (test_efl_access_app_obj_name_get)
 
    ck_assert_str_eq(ret, "Test name");
 
-   efl_del(root);
+   efl_unref(root);
 }
 EFL_END_TEST
 
@@ -93,7 +93,7 @@ EFL_END_TEST
 
 EFL_START_TEST (test_efl_access_object_role_get)
 {
-   Eo* root = efl_add(ELM_ATSPI_APP_OBJECT_CLASS, efl_main_loop_get());
+   Eo* root = efl_add_ref(ELM_ATSPI_APP_OBJECT_CLASS, NULL);
 
    Efl_Access_Role role;
 
@@ -101,7 +101,7 @@ EFL_START_TEST (test_efl_access_object_role_get)
 
    ck_assert(role == EFL_ACCESS_ROLE_APPLICATION);
 
-   efl_del(root);
+   efl_unref(root);
 }
 EFL_END_TEST
 
@@ -127,7 +127,7 @@ EFL_END_TEST
 
 EFL_START_TEST (test_efl_access_object_role_name_get)
 {
-   Eo* root = efl_add(ELM_ATSPI_APP_OBJECT_CLASS, efl_main_loop_get());
+   Eo* root = efl_add_ref(ELM_ATSPI_APP_OBJECT_CLASS, NULL);
 
    const char *ret = NULL;
 
@@ -135,13 +135,13 @@ EFL_START_TEST (test_efl_access_object_role_name_get)
 
    ck_assert(ret != NULL);
 
-   efl_del(root);
+   efl_unref(root);
 }
 EFL_END_TEST
 
 EFL_START_TEST (test_efl_access_object_localized_role_name_get)
 {
-   Eo* root = efl_add(ELM_ATSPI_APP_OBJECT_CLASS, efl_main_loop_get());
+   Eo* root = efl_add_ref(ELM_ATSPI_APP_OBJECT_CLASS, NULL);
 
    const char *ret = NULL;
 
@@ -149,13 +149,13 @@ EFL_START_TEST 
(test_efl_access_object_localized_role_name_get)
 
    ck_assert(ret != NULL);
 
-   efl_del(root);
+   efl_unref(root);
 }
 EFL_END_TEST
 
 EFL_START_TEST (test_efl_access_object_description_set)
 {
-   Eo* root = efl_add(ELM_ATSPI_APP_OBJECT_CLASS, efl_main_loop_get());
+   Eo* root = efl_add_ref(ELM_ATSPI_APP_OBJECT_CLASS, NULL);
 
    const char *ret = NULL;
 
@@ -176,7 +176,7 @@ EFL_START_TEST (test_efl_access_object_description_set)
 
    ck_assert(ret == NULL);
 
-   efl_del(root);
+   efl_unref(root);
 }
 EFL_END_TEST
 
@@ -196,7 +196,7 @@ EFL_END_TEST
 EFL_START_TEST (test_efl_access_children_and_parent)
 {
    generate_app();
-   Eo* root = efl_add(ELM_ATSPI_APP_OBJECT_CLASS, efl_main_loop_get());
+   Eo* root = efl_add_ref(ELM_ATSPI_APP_OBJECT_CLASS, NULL);
 
    Eina_List *child_list = NULL;
 
@@ -213,14 +213,14 @@ EFL_START_TEST (test_efl_access_children_and_parent)
    ck_assert_ptr_ne(win, NULL);
    ck_assert_ptr_eq(win, g_win);
 
-   efl_del(root);
+   efl_unref(root);
 }
 EFL_END_TEST
 
 EFL_START_TEST (test_efl_access_children_and_parent2)
 {
    generate_app();
-   Eo* root = efl_add(ELM_ATSPI_APP_OBJECT_CLASS, efl_main_loop_get());
+   Eo* root = efl_add_ref(ELM_ATSPI_APP_OBJECT_CLASS, NULL);
 
    Eo *win = NULL;
 
@@ -239,7 +239,7 @@ EFL_START_TEST (test_efl_access_children_and_parent2)
    ck_assert(btn != NULL);
    ck_assert(btn == g_btn);
 
-   efl_del(root);
+   efl_unref(root);
 }
 EFL_END_TEST
 
diff --git a/src/tests/elementary/elm_test_config.c 
b/src/tests/elementary/elm_test_config.c
index 2edab80b51..777c6c29e9 100644
--- a/src/tests/elementary/elm_test_config.c
+++ b/src/tests/elementary/elm_test_config.c
@@ -148,14 +148,14 @@ EFL_START_TEST (elm_config_win)
    Eo *cfg = efl_provider_find(efl_main_loop_get(), EFL_CONFIG_INTERFACE);
    fail_if(!cfg);
 
-   Eo *win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get());
+   Eo *win = efl_add_ref(EFL_UI_WIN_CLASS, NULL);
    Eo *cfg2 = efl_provider_find(win, EFL_CONFIG_INTERFACE);
    fail_if(cfg != cfg2);
 
    elm_config_cache_flush_interval_set(42);
    fail_if(efl_config_int_get(win, "cache_flush_interval") != 42);
 
-   efl_del(win);
+   efl_unref(win);
 }
 EFL_END_TEST
 
diff --git a/src/tests/elementary/elm_test_focus.c 
b/src/tests/elementary/elm_test_focus.c
index dfde01d650..3ce49d9c71 100644
--- a/src/tests/elementary/elm_test_focus.c
+++ b/src/tests/elementary/elm_test_focus.c
@@ -2,10 +2,10 @@
 
 EFL_START_TEST(focus_unregister_twice)
 {
-   Efl_Ui_Focus_Object *r1 = efl_add(FOCUS_TEST_CLASS, efl_main_loop_get());
-   Efl_Ui_Focus_Object *r2 = efl_add(FOCUS_TEST_CLASS, efl_main_loop_get());
+   Efl_Ui_Focus_Object *r1 = efl_add_ref(FOCUS_TEST_CLASS, NULL);
+   Efl_Ui_Focus_Object *r2 = efl_add_ref(FOCUS_TEST_CLASS, NULL);
 
-   Efl_Ui_Focus_Manager *m = efl_add(EFL_UI_FOCUS_MANAGER_CALC_CLASS, 
efl_main_loop_get(),
+   Efl_Ui_Focus_Manager *m = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
     efl_ui_focus_manager_root_set(efl_added, r1)
    );
 
@@ -15,9 +15,9 @@ EFL_START_TEST(focus_unregister_twice)
    efl_ui_focus_manager_calc_unregister(m, r1);
    efl_ui_focus_manager_calc_unregister(m, r1);
 
-   efl_del(r2);
-   efl_del(r1);
-   efl_del(m);
+   efl_unref(r2);
+   efl_unref(r1);
+   efl_unref(m);
 
 }
 EFL_END_TEST
@@ -27,15 +27,15 @@ EFL_START_TEST(focus_register_twice)
    Efl_Ui_Focus_Object *r1 = elm_focus_test_object_new("r1", 0, 0, 10, 10);
    Efl_Ui_Focus_Object *r2 = elm_focus_test_object_new("r2", 0, 10, 10, 10);
 
-   Efl_Ui_Focus_Manager *m = efl_add(EFL_UI_FOCUS_MANAGER_CALC_CLASS, 
efl_main_loop_get(),
+   Efl_Ui_Focus_Manager *m = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
     efl_ui_focus_manager_root_set(efl_added, r1)
    );
 
    fail_if(!efl_ui_focus_manager_calc_register(m, r2, r1, NULL));
    fail_if(efl_ui_focus_manager_calc_register(m, r2, r1, NULL));
 
-   efl_del(r1);
-   efl_del(m);
+   efl_unref(r1);
+   efl_unref(m);
 
 }
 EFL_END_TEST
@@ -71,13 +71,12 @@ EFL_START_TEST(pos_check)
    CHECK(north, east, west, NULL, middle)
    CHECK(south, east, west, middle, NULL)
 
-   efl_del(middle);
-   efl_del(south);
-   efl_del(north);
-   efl_del(east);
-   efl_del(west);
-   efl_del(m);
-
+   efl_unref(middle);
+   efl_unref(south);
+   efl_unref(north);
+   efl_unref(east);
+   efl_unref(west);
+   efl_unref(m);
 }
 EFL_END_TEST
 
@@ -142,11 +141,11 @@ EFL_START_TEST(pos_check2)
 
 #undef ck_assert_set_eq
 
-   efl_del(middle);
-   efl_del(north_east);
-   efl_del(north_west);
-   efl_del(south_east);
-   efl_del(south_west);
+   efl_unref(middle);
+   efl_unref(north_east);
+   efl_unref(north_west);
+   efl_unref(south_east);
+   efl_unref(south_west);
 
 }
 EFL_END_TEST
@@ -157,11 +156,11 @@ EFL_START_TEST(redirect)
    TEST_OBJ_NEW(one, 0, 0, 20, 20);
    TEST_OBJ_NEW(two, 20, 0, 20, 20);
 
-   Efl_Ui_Focus_Manager *m = efl_add(EFL_UI_FOCUS_MANAGER_CALC_CLASS, 
efl_main_loop_get(),
+   Efl_Ui_Focus_Manager *m = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
     efl_ui_focus_manager_root_set(efl_added, root)
    );
 
-   Efl_Ui_Focus_Manager *m2 = efl_add(EFL_UI_FOCUS_MANAGER_CALC_CLASS, 
efl_main_loop_get(),
+   Efl_Ui_Focus_Manager *m2 = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, 
NULL,
     efl_ui_focus_manager_root_set(efl_added, root2)
    );
 
@@ -173,8 +172,8 @@ EFL_START_TEST(redirect)
 
    ck_assert_ptr_eq(efl_ui_focus_manager_move(m, 
EFL_UI_FOCUS_DIRECTION_RIGHT), two);
 
-   efl_del(m);
-   efl_del(m2);
+   efl_unref(m);
+   efl_unref(m2);
 }
 EFL_END_TEST
 
@@ -350,8 +349,8 @@ EFL_START_TEST(logical_chain_multi_redirect)
 
    _check_chain(m, objects);
 
-   efl_del(m2);
-   efl_del(m);
+   efl_unref(m2);
+   efl_unref(m);
 }
 EFL_END_TEST
 
@@ -382,8 +381,8 @@ EFL_START_TEST(logical_chain_single_redirect)
 
    _check_chain(m, objects);
 
-   efl_del(m2);
-   efl_del(m);
+   efl_unref(m2);
+   efl_unref(m);
 }
 EFL_END_TEST
 
@@ -391,10 +390,10 @@ EFL_START_TEST(finalize_check)
 {
    Efl_Ui_Focus_Manager *m;
 
-   m = efl_add(EFL_UI_FOCUS_MANAGER_CALC_CLASS, efl_main_loop_get());
+   m = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL);
    fail_if(m);
 
-   efl_del(m);
+   efl_unref(m);
 }
 EFL_END_TEST
 
@@ -406,11 +405,11 @@ EFL_START_TEST(redirect_param)
    TEST_OBJ_NEW(root2, 0, 20, 20, 20);
    TEST_OBJ_NEW(child, 0, 20, 20, 20);
 
-   m = efl_add(EFL_UI_FOCUS_MANAGER_CALC_CLASS, efl_main_loop_get(),
+   m = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
     efl_ui_focus_manager_root_set(efl_added, root)
    );
 
-   m2 = efl_add(EFL_UI_FOCUS_MANAGER_CALC_CLASS, efl_main_loop_get(),
+   m2 = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
     efl_ui_focus_manager_root_set(efl_added, root2)
    );
 
@@ -419,8 +418,8 @@ EFL_START_TEST(redirect_param)
 
    ck_assert_ptr_eq(efl_ui_focus_manager_redirect_get(m), m2);
 
-   efl_del(m);
-   efl_del(m2);
+   efl_unref(m);
+   efl_unref(m2);
 }
 EFL_END_TEST
 
@@ -432,7 +431,7 @@ EFL_START_TEST(invalid_args_check)
    TEST_OBJ_NEW(child, 0, 20, 20, 20);
    TEST_OBJ_NEW(child2, 0, 20, 20, 20);
 
-   m = efl_add(EFL_UI_FOCUS_MANAGER_CALC_CLASS, efl_main_loop_get(),
+   m = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
     efl_ui_focus_manager_root_set(efl_added, root)
    );
 
@@ -450,7 +449,7 @@ EFL_START_TEST(invalid_args_check)
    ck_assert_int_eq(efl_ui_focus_manager_calc_register(m, child2, root, NULL), 
1);
    ck_assert_int_eq(efl_ui_focus_manager_calc_update_parent(m, child, child2), 
1);
 
-   efl_del(m);
+   efl_unref(m);
 }
 EFL_END_TEST
 
@@ -464,7 +463,7 @@ EFL_START_TEST(order_check)
    TEST_OBJ_NEW(child2, 0, 20, 20, 20);
    TEST_OBJ_NEW(child3, 0, 20, 20, 20);
 
-   m = efl_add(EFL_UI_FOCUS_MANAGER_CALC_CLASS, efl_main_loop_get(),
+   m = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
     efl_ui_focus_manager_root_set(efl_added, root)
    );
 
@@ -486,7 +485,7 @@ EFL_START_TEST(order_check)
    order = eina_list_append(order, child2);
    ck_assert_int_eq(efl_ui_focus_manager_calc_update_children(m, root, order), 
0);
 
-   efl_del(m);
+   efl_unref(m);
 }
 EFL_END_TEST
 
@@ -500,7 +499,7 @@ EFL_START_TEST(logical_shift)
    TEST_OBJ_NEW(sub_sub, 0, 0, 10, 10);
    TEST_OBJ_NEW(sub_child, 0, 0, 10, 10);
 
-   m = efl_add(EFL_UI_FOCUS_MANAGER_CALC_CLASS, efl_main_loop_get(),
+   m = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
     efl_ui_focus_manager_root_set(efl_added, root)
    );
 
@@ -518,7 +517,7 @@ EFL_START_TEST(logical_shift)
    efl_ui_focus_manager_focus_set(m, sub_sub);
    ck_assert_ptr_eq(efl_ui_focus_manager_focus_get(m), sub_child);
 
-   efl_del(m);
+   efl_unref(m);
 }
 EFL_END_TEST
 
@@ -530,13 +529,13 @@ EFL_START_TEST(root_redirect_chain)
    TEST_OBJ_NEW(root2, 0, 20, 20, 20);
    TEST_OBJ_NEW(child, 0, 20, 20, 20);
 
-   m = efl_add(EFL_UI_FOCUS_MANAGER_CALC_CLASS, efl_main_loop_get(),
+   m = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
     efl_ui_focus_manager_root_set(efl_added, root)
    );
 
    focus_test_manager_set(root2, m);
 
-   m2 = efl_add(EFL_UI_FOCUS_MANAGER_CALC_CLASS, efl_main_loop_get(),
+   m2 = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
     efl_ui_focus_manager_root_set(efl_added, root2)
    );
 
@@ -546,8 +545,8 @@ EFL_START_TEST(root_redirect_chain)
 
    ck_assert_ptr_eq(efl_ui_focus_manager_redirect_get(m), m2);
 
-   efl_del(m);
-   efl_del(m2);
+   efl_unref(m);
+   efl_unref(m2);
 }
 EFL_END_TEST
 
@@ -559,21 +558,21 @@ EFL_START_TEST(root_redirect_chain_unset)
    TEST_OBJ_NEW(root2, 0, 20, 20, 20);
    TEST_OBJ_NEW(child, 0, 20, 20, 20);
 
-   m = efl_add(EFL_UI_FOCUS_MANAGER_CALC_CLASS, efl_main_loop_get(),
+   m = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
     efl_ui_focus_manager_root_set(efl_added, root)
    );
 
    focus_test_manager_set(root2, m);
 
-   m2 = efl_add(EFL_UI_FOCUS_MANAGER_CALC_CLASS, efl_main_loop_get(),
+   m2 = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
     efl_ui_focus_manager_root_set(efl_added, root2)
    );
 
-   m3 = efl_add(EFL_UI_FOCUS_MANAGER_CALC_CLASS, efl_main_loop_get(),
+   m3 = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
     efl_ui_focus_manager_root_set(efl_added, root2)
    );
 
-   m4 = efl_add(EFL_UI_FOCUS_MANAGER_CALC_CLASS, efl_main_loop_get(),
+   m4 = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
     efl_ui_focus_manager_root_set(efl_added, root2)
    );
 
@@ -590,10 +589,10 @@ EFL_START_TEST(root_redirect_chain_unset)
    ck_assert_ptr_eq(efl_ui_focus_manager_redirect_get(m3), NULL);
    ck_assert_ptr_eq(efl_ui_focus_manager_redirect_get(m4), NULL);
 
-   efl_del(m);
-   efl_del(m2);
-   efl_del(m3);
-   efl_del(m4);
+   efl_unref(m);
+   efl_unref(m2);
+   efl_unref(m3);
+   efl_unref(m4);
 }
 EFL_END_TEST
 
@@ -606,7 +605,7 @@ _recursive_triangle_manager(int recusion_depth, 
Efl_Ui_Focus_Object **most_right
    TEST_OBJ_NEW(root, 0, 20, 20, 20);
    TEST_OBJ_NEW(child2, 0, 20, 20, 20);
 
-   m = efl_add(EFL_UI_FOCUS_MANAGER_CALC_CLASS, efl_main_loop_get(),
+   m = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
     efl_ui_focus_manager_root_set(efl_added, root)
    );
 
@@ -688,8 +687,7 @@ EFL_START_TEST(first_touch_check)
    ck_assert_ptr_eq(efl_ui_focus_manager_focus_get(_get_highest_redirect(m)), 
most_right);
 
    EINA_LIST_FREE(managers, m)
-     efl_del(m);
-
+     efl_unref(m);
 }
 EFL_END_TEST
 
@@ -702,7 +700,7 @@ EFL_START_TEST(test_request_subchild_empty)
 
    ck_assert_ptr_eq(efl_ui_focus_manager_request_subchild(m, root), NULL);
 
-   efl_del(m);
+   efl_unref(m);
 }
 EFL_END_TEST
 
@@ -718,7 +716,7 @@ EFL_START_TEST(test_request_subchild_one_element)
    ck_assert_ptr_eq(efl_ui_focus_manager_request_subchild(m, root), c1);
    ck_assert_ptr_eq(efl_ui_focus_manager_request_subchild(m, c1), NULL);
 
-   efl_del(m);
+   efl_unref(m);
 }
 EFL_END_TEST
 
@@ -737,7 +735,7 @@ EFL_START_TEST(test_request_subchild_child_alongside)
    ck_assert_ptr_eq(efl_ui_focus_manager_request_subchild(m, c1), NULL);
    ck_assert_ptr_eq(efl_ui_focus_manager_request_subchild(m, c2), NULL);
 
-   efl_del(m);
+   efl_unref(m);
 }
 EFL_END_TEST
 
@@ -756,7 +754,7 @@ EFL_START_TEST(test_request_subchild_child_logical_regular)
    ck_assert_ptr_eq(efl_ui_focus_manager_request_subchild(m, c1), c2);
    ck_assert_ptr_eq(efl_ui_focus_manager_request_subchild(m, c2), NULL);
 
-   efl_del(m);
+   efl_unref(m);
 }
 EFL_END_TEST
 
@@ -775,7 +773,7 @@ EFL_START_TEST(test_request_subchild_child_regular_regular)
    ck_assert_ptr_eq(efl_ui_focus_manager_request_subchild(m, c1), c2);
    ck_assert_ptr_eq(efl_ui_focus_manager_request_subchild(m, c2), NULL);
 
-   efl_del(m);
+   efl_unref(m);
 }
 EFL_END_TEST
 
@@ -798,7 +796,7 @@ EFL_START_TEST(test_unregister_last_focused_no_history)
    efl_ui_focus_manager_calc_unregister(m, c2);
    ck_assert_ptr_eq(efl_ui_focus_manager_focus_get(m), c1);
 
-   efl_del(m);
+   efl_unref(m);
 }
 EFL_END_TEST
 
@@ -823,7 +821,7 @@ EFL_START_TEST(test_unregister_last_focused)
    efl_ui_focus_manager_calc_unregister(m, c3);
    ck_assert_ptr_eq(efl_ui_focus_manager_focus_get(m), c2);
 
-   efl_del(m);
+   efl_unref(m);
 }
 EFL_END_TEST
 
@@ -841,7 +839,7 @@ EFL_START_TEST(test_unregister_last_focused_no_child)
    efl_ui_focus_manager_calc_unregister(m, c1);
    ck_assert_ptr_eq(efl_ui_focus_manager_focus_get(m), NULL);
 
-   efl_del(m);
+   efl_unref(m);
 }
 EFL_END_TEST
 
@@ -875,7 +873,7 @@ EFL_START_TEST(test_pop_history_element)
    ck_assert_int_eq(efl_ui_focus_object_focus_get(c2), EINA_FALSE);
    ck_assert_int_eq(efl_ui_focus_object_focus_get(c1), EINA_TRUE);
 
-   efl_del(m);
+   efl_unref(m);
 }
 EFL_END_TEST
 
diff --git a/src/tests/elementary/elm_test_focus_common.c 
b/src/tests/elementary/elm_test_focus_common.c
index 3ecbd4f8fe..63ee2dc454 100644
--- a/src/tests/elementary/elm_test_focus_common.c
+++ b/src/tests/elementary/elm_test_focus_common.c
@@ -17,7 +17,7 @@ elm_focus_test_object_new(const char *name, int x, int y, int 
w, int h)
 {
    Efl_Ui_Focus_Object *ret;
 
-   ret = efl_add(FOCUS_TEST_CLASS, efl_main_loop_get(),
+   ret = efl_add_ref(FOCUS_TEST_CLASS, NULL,
     efl_name_set(efl_added, name)
    );
    Q(ret, x, y, w, h);
@@ -48,7 +48,7 @@ elm_focus_test_manager_new(Efl_Ui_Focus_Object **middle)
    Efl_Ui_Focus_Manager *m;
 
    root = elm_focus_test_object_new("middle", 40, 40, 20, 20);
-   m = efl_add(EFL_UI_FOCUS_MANAGER_CALC_CLASS, efl_main_loop_get(),
+   m = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
      efl_ui_focus_manager_root_set(efl_added, root)
    );
    if (middle)
diff --git a/src/tests/elementary/elm_test_focus_sub.c 
b/src/tests/elementary/elm_test_focus_sub.c
index 98a809b6b6..3f100dfae2 100644
--- a/src/tests/elementary/elm_test_focus_sub.c
+++ b/src/tests/elementary/elm_test_focus_sub.c
@@ -75,7 +75,7 @@ _setup(Efl_Ui_Focus_Manager **m, Efl_Ui_Focus_Manager_Sub 
**sub, Efl_Ui_Focus_Ob
     EFL_OBJECT_OP_FUNC(efl_ui_focus_manager_calc_unregister, _unregister),
     );
 
-   Efl_Ui_Focus_Manager *manager = efl_add(EFL_UI_FOCUS_MANAGER_CALC_CLASS, 
efl_main_loop_get(),
+   Efl_Ui_Focus_Manager *manager = 
efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
     efl_ui_focus_manager_root_set(efl_added, root_manager)
    );
    //flush now all changes
@@ -85,7 +85,7 @@ _setup(Efl_Ui_Focus_Manager **m, Efl_Ui_Focus_Manager_Sub 
**sub, Efl_Ui_Focus_Ob
 
    efl_object_override(manager, &manager_tracker);
 
-   Focus_Test_Sub_Main *focus_main = efl_add(FOCUS_TEST_SUB_MAIN_CLASS, 
efl_main_loop_get());
+   Focus_Test_Sub_Main *focus_main = efl_add_ref(FOCUS_TEST_SUB_MAIN_CLASS, 
NULL);
 
    efl_key_data_set(focus_main, "__user_manager", manager);
    efl_key_data_set(focus_main, "__user_parent", root_manager);
@@ -134,11 +134,11 @@ EFL_START_TEST(correct_register)
    efl_ui_focus_manager_calc_unregister(sub, child1);
    efl_ui_focus_manager_calc_unregister(sub, child2);
    efl_ui_focus_manager_calc_unregister(sub, child3);
-   efl_del(child1);
-   efl_del(child2);
-   efl_del(child3);
-   efl_del(sub);
-   efl_del(manager);
+   efl_unref(child1);
+   efl_unref(child2);
+   efl_unref(child3);
+   efl_unref(sub);
+   efl_unref(manager);
 }
 EFL_END_TEST
 
@@ -173,12 +173,12 @@ EFL_START_TEST(correct_unregister)
    eina_list_free(unregistered);
    unregistered = NULL;
 
-   efl_del(sub);
-   efl_del(manager);
-   efl_del(root);
-   efl_del(child1);
-   efl_del(child2);
-   efl_del(child3);
+   efl_unref(sub);
+   efl_unref(manager);
+   efl_unref(root);
+   efl_unref(child1);
+   efl_unref(child2);
+   efl_unref(child3);
 }
 EFL_END_TEST
 
@@ -211,12 +211,12 @@ EFL_START_TEST(correct_un_register)
    fail_if(!_set_equal(registered, set_add));
    fail_if(!_set_equal(unregistered, set_del));
 
-   efl_del(sub);
-   efl_del(manager);
-   efl_del(root);
-   efl_del(child1);
-   efl_del(child2);
-   efl_del(child3);
+   efl_unref(sub);
+   efl_unref(manager);
+   efl_unref(root);
+   efl_unref(child1);
+   efl_unref(child2);
+   efl_unref(child3);
 }
 EFL_END_TEST
 

-- 


Reply via email to