attempt to fix a rare crash in fileman triggered by a delayed deletion that I don't understand but don't want to change

SVN revision: 72130
This commit is contained in:
Mike Blumenkrantz 2012-06-14 13:08:46 +00:00
parent 1f2732b978
commit a40771fd54
1 changed files with 15 additions and 1 deletions

View File

@ -2441,9 +2441,20 @@ _e_fwin_op_registry_listener_cb(void *data,
edje_object_signal_emit(o, "e,action,set,normal", "e");
}
static void
_e_fwin_op_registry_free_check(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
{
Ecore_Timer *t;
t = evas_object_data_get(obj, "_e_fwin_op_registry_thingy");
if (!t) return;
ecore_timer_del(t);
}
static Eina_Bool
_e_fwin_op_registry_free_data_delayed(void *data)
{
evas_object_event_callback_del_full(data, EVAS_CALLBACK_FREE, _e_fwin_op_registry_free_check, data);
evas_object_del((Evas_Object *)data);
return ECORE_CALLBACK_CANCEL;
}
@ -2451,7 +2462,10 @@ _e_fwin_op_registry_free_data_delayed(void *data)
static void
_e_fwin_op_registry_free_data(void *data)
{
ecore_timer_add(5.0, _e_fwin_op_registry_free_data_delayed, data);
Ecore_Timer *t;
t = ecore_timer_add(5.0, _e_fwin_op_registry_free_data_delayed, data);
evas_object_data_set(data, "_e_fwin_op_registry_thingy", t);
evas_object_event_callback_add(data, EVAS_CALLBACK_FREE, _e_fwin_op_registry_free_check, data);
}
static Eina_Bool