fix valgrind issues on frees of evas screwing deletions of widgets - this
might fix a slew of bugs on dialog close. SVN revision: 29846
This commit is contained in:
parent
96db0e5fa1
commit
941d1d56f7
|
@ -309,7 +309,8 @@ _e_config_dialog_cb_ok(void *data, E_Dialog *dia)
|
|||
if (cfd->view->advanced.apply_cfdata)
|
||||
ok = cfd->view->advanced.apply_cfdata(cfd, cfd->cfdata);
|
||||
}
|
||||
if (ok) e_object_del(E_OBJECT(cfd));
|
||||
if (ok)
|
||||
e_util_defer_object_del(E_OBJECT(cfd));
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -388,5 +389,5 @@ _e_config_dialog_cb_close(void *data, E_Dialog *dia)
|
|||
ok = cfd->view->close_cfdata(cfd, cfd->cfdata);
|
||||
|
||||
if (ok)
|
||||
e_object_del(E_OBJECT(dia));
|
||||
e_util_defer_object_del(E_OBJECT(cfd));
|
||||
}
|
||||
|
|
|
@ -202,7 +202,7 @@ _e_configure_cb_close(void *data, void *data2)
|
|||
|
||||
eco = data;
|
||||
if (!eco) return;
|
||||
e_object_del(E_OBJECT(eco));
|
||||
e_util_defer_object_del(E_OBJECT(eco));
|
||||
}
|
||||
|
||||
static E_Configure_Category *
|
||||
|
|
|
@ -27,6 +27,7 @@ struct _E_Util_Fake_Mouse_Up_Info
|
|||
};
|
||||
|
||||
/* local subsystem functions */
|
||||
static int _e_util_cb_delayed_del(void *data);
|
||||
static void _e_util_container_fake_mouse_up_cb(void *data);
|
||||
static int _e_util_wakeup_cb(void *data);
|
||||
|
||||
|
@ -906,7 +907,20 @@ e_util_dir_check(const char *dir)
|
|||
return 1;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
e_util_defer_object_del(E_Object *obj)
|
||||
{
|
||||
ecore_idle_enterer_add(_e_util_cb_delayed_del, obj);
|
||||
}
|
||||
|
||||
/* local subsystem functions */
|
||||
static int
|
||||
_e_util_cb_delayed_del(void *data)
|
||||
{
|
||||
e_object_del(E_OBJECT(data));
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
_e_util_container_fake_mouse_up_cb(void *data)
|
||||
{
|
||||
|
|
|
@ -52,6 +52,7 @@ EAPI Evas_Object *e_util_desktop_icon_add(Efreet_Desktop *desktop, const char *s
|
|||
EAPI Evas_Object *e_util_icon_theme_icon_add(const char *icon_name, const char *size, Evas *evas);
|
||||
EAPI void e_util_desktop_menu_item_icon_add(Efreet_Desktop *desktop, const char *size, E_Menu_Item *mi);
|
||||
EAPI int e_util_dir_check(const char *dir);
|
||||
|
||||
EAPI void e_util_defer_object_del(E_Object *obj);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue