summaryrefslogtreecommitdiff
path: root/src/lib/edje/edje_program.c
diff options
context:
space:
mode:
authorCedric BAIL <cedric.bail@free.fr>2019-02-06 13:48:43 -0500
committerMike Blumenkrantz <zmike@samsung.com>2019-02-06 13:48:43 -0500
commitf484ca0951e4875f926ebbd9f779d38a13659577 (patch)
treee67dfc2db88b882e6e904d4ac6219c9549472cb7 /src/lib/edje/edje_program.c
parent917e0aa0feb9a79721953ea632723d26a251a850 (diff)
downloadefl-f484ca0951e4875f926ebbd9f779d38a13659577.tar.gz
edje: migrate Eo API to use Eo callback instead of opaque type.
Summary: Depends on D7869 Reviewers: zmike, q66, segfaultxavi, bu5hm4n Reviewed By: zmike Subscribers: #reviewers, #committers Tags: #efl Maniphest Tasks: T7671 Differential Revision: https://phab.enlightenment.org/D7870
Diffstat (limited to 'src/lib/edje/edje_program.c')
-rw-r--r--src/lib/edje/edje_program.c27
1 files changed, 16 insertions, 11 deletions
diff --git a/src/lib/edje/edje_program.c b/src/lib/edje/edje_program.c
index e6a1373adf..9d8f90f6c5 100644
--- a/src/lib/edje/edje_program.c
+++ b/src/lib/edje/edje_program.c
@@ -237,7 +237,9 @@ edje_transition_duration_factor_set(double scale)
}
Eina_Bool
-_edje_object_signal_callback_add(Edje *ed, const char *emission, const char *source, Efl_Signal_Cb func, void *data)
+_edje_object_signal_callback_add(Edje *ed, const char *emission, const char *source,
+ Edje_Signal_Cb func_legacy,
+ Efl_Signal_Cb func_eo, Eina_Free_Cb func_free_cb, void *data)
{
Edje_Signal_Callback_Group *gp;
const char *sig;
@@ -252,7 +254,7 @@ _edje_object_signal_callback_add(Edje *ed, const char *emission, const char *sou
src = eina_stringshare_add(source);
gp = (Edje_Signal_Callback_Group *) ed->callbacks;
- ok = _edje_signal_callback_push(gp, sig, src, func, data, EINA_TRUE);
+ ok = _edje_signal_callback_push(gp, sig, src, func_legacy, func_eo, func_free_cb, data, EINA_TRUE);
eina_stringshare_del(sig);
eina_stringshare_del(src);
@@ -267,17 +269,17 @@ edje_object_propagate_callback_add(Evas_Object *obj, Efl_Signal_Cb func, void *d
ed = _edje_fetch(obj);
if (!ed || ed->delete_me) return;
- _edje_object_signal_callback_add(ed, "*", "*", func, data);
+ _edje_object_signal_callback_add(ed, "*", "*", func, NULL, NULL, data);
}
-EOLIAN Eina_Bool
-_efl_canvas_layout_efl_layout_signal_signal_callback_add(Eo *obj EINA_UNUSED, Edje *ed, const char *emission, const char *source, Efl_Signal_Cb func, void *data)
+Eina_Bool
+_efl_canvas_layout_efl_layout_signal_signal_callback_add(Eo *obj EINA_UNUSED, Edje *ed, const char *emission, const char *source, void *func_data, EflLayoutSignalCb func, Eina_Free_Cb func_free_cb)
{
- return _edje_object_signal_callback_add(ed, emission, source, func, data);
+ return _edje_object_signal_callback_add(ed, emission, source, NULL, func, func_free_cb, func_data);
}
-EOLIAN Eina_Bool
-_efl_canvas_layout_efl_layout_signal_signal_callback_del(Eo *obj EINA_UNUSED, Edje *ed, const char *emission, const char *source, Efl_Signal_Cb func, void *data)
+Eina_Bool
+_efl_canvas_layout_efl_layout_signal_signal_callback_del(Eo *obj EINA_UNUSED, Edje *ed, const char *emission, const char *source, void *func_data, EflLayoutSignalCb func, Eina_Free_Cb func_free_cb)
{
Edje_Signal_Callback_Group *gp;
Eina_Bool ok;
@@ -291,7 +293,7 @@ _efl_canvas_layout_efl_layout_signal_signal_callback_del(Eo *obj EINA_UNUSED, Ed
emission = eina_stringshare_add(emission);
source = eina_stringshare_add(source);
- ok = _edje_signal_callback_disable(gp, emission, source, func, data);
+ ok = _edje_signal_callback_disable(gp, emission, source, NULL, func, func_free_cb, func_data);
eina_stringshare_del(emission);
eina_stringshare_del(source);
@@ -1669,13 +1671,16 @@ _edje_emit_cb(Edje *ed, const char *sig, const char *src, Edje_Message_Signal_Da
cb = &m->matches[*i];
- cb->func((void *)ed->callbacks->custom_data[*i], ed->obj, sig, src);
+ if (ed->callbacks->flags[*i].legacy)
+ cb->legacy((void *)ed->callbacks->custom_data[*i], ed->obj, sig, src);
+ else
+ cb->eo((void *)ed->callbacks->custom_data[*i], ed->obj, sig, src);
if (_edje_block_break(ed)) break;
}
}
break_prog:
- _edje_signal_callback_matches_unref(m);
+ _edje_signal_callback_matches_unref(m, ed->callbacks->flags, ed->callbacks->custom_data);
_edje_signal_callback_patterns_unref(ssp);
}