}
static void
-_e_comp_win_effect_end_cb(void *data, Evas_Object *obj, const char *emission EINA_UNUSED, const char *source EINA_UNUSED)
+_e_comp_win_effect_end_cb(void *data EINA_UNUSED, Evas_Object *obj, const char *emission, const char *source)
{
- edje_object_signal_callback_del(obj, "e,action,done", "e", data);
- edje_object_signal_callback_del_full(obj, "e,action,done", "e", _e_comp_win_effect_end_cb, data);
+ Edje_Signal_Cb end_cb;
+ void *end_data;
+
+ end_cb = evas_object_data_get(obj, "_e_comp.end_cb");
+ end_data = evas_object_data_get(obj, "_e_comp.end_data");
+ end_cb(end_data, obj, emission, source);
+
+ edje_object_signal_callback_del_full(obj, "e,action,done", "e", _e_comp_win_effect_end_cb, NULL);
}
EAPI void
{
EINA_SAFETY_ON_NULL_RETURN(cw);
EINA_SAFETY_ON_FALSE_RETURN(cw->bd); //FIXME
- edje_object_signal_callback_del(cw->effect_obj, "e,action,done", "e", end_cb);
- edje_object_signal_callback_del(cw->effect_obj, "e,action,done", "e", _e_comp_win_effect_end_cb);
if (cw->effect_clip)
{
evas_object_clip_unset(cw->effect_obj);
}
}
/* this is a stack, so the callbacks added first will be called last */
- edje_object_signal_callback_add(cw->effect_obj, "e,action,done", "e", _e_comp_win_effect_end_cb, end_cb);
- edje_object_signal_callback_add(cw->effect_obj, "e,action,done", "e", end_cb, (void*)end_data);
+ edje_object_signal_callback_del_full(cw->effect_obj, "e,action,done", "e", _e_comp_win_effect_end_cb, NULL);
+
+ edje_object_signal_callback_add(cw->effect_obj, "e,action,done", "e", _e_comp_win_effect_end_cb, NULL);
+ evas_object_data_set(cw->effect_obj, "_e_comp.end_cb", end_cb);
+ evas_object_data_set(cw->effect_obj, "_e_comp.end_data", end_data);
+
edje_object_signal_emit(cw->effect_obj, "e,action,go", "e");
}
EAPI void
-e_comp_win_effect_stop(E_Comp_Win *cw, Edje_Signal_Cb end_cb)
+e_comp_win_effect_stop(E_Comp_Win *cw, Edje_Signal_Cb end_cb EINA_UNUSED)
{
EINA_SAFETY_ON_NULL_RETURN(cw);
if (cw->effect_clip)
cw->effect_clip = 0;
}
edje_object_signal_emit(cw->effect_obj, "e,action,stop", "e");
- edje_object_signal_callback_del(cw->effect_obj, "e,action,done", "e", end_cb);
- edje_object_signal_callback_del(cw->effect_obj, "e,action,done", "e", _e_comp_win_effect_end_cb);
+ edje_object_signal_callback_del_full(cw->effect_obj, "e,action,done", "e", _e_comp_win_effect_end_cb, NULL);
}
EAPI unsigned int