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)
|
if (cfd->view->advanced.apply_cfdata)
|
||||||
ok = cfd->view->advanced.apply_cfdata(cfd, cfd->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
|
static void
|
||||||
|
@ -388,5 +389,5 @@ _e_config_dialog_cb_close(void *data, E_Dialog *dia)
|
||||||
ok = cfd->view->close_cfdata(cfd, cfd->cfdata);
|
ok = cfd->view->close_cfdata(cfd, cfd->cfdata);
|
||||||
|
|
||||||
if (ok)
|
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;
|
eco = data;
|
||||||
if (!eco) return;
|
if (!eco) return;
|
||||||
e_object_del(E_OBJECT(eco));
|
e_util_defer_object_del(E_OBJECT(eco));
|
||||||
}
|
}
|
||||||
|
|
||||||
static E_Configure_Category *
|
static E_Configure_Category *
|
||||||
|
|
|
@ -27,6 +27,7 @@ struct _E_Util_Fake_Mouse_Up_Info
|
||||||
};
|
};
|
||||||
|
|
||||||
/* local subsystem functions */
|
/* local subsystem functions */
|
||||||
|
static int _e_util_cb_delayed_del(void *data);
|
||||||
static void _e_util_container_fake_mouse_up_cb(void *data);
|
static void _e_util_container_fake_mouse_up_cb(void *data);
|
||||||
static int _e_util_wakeup_cb(void *data);
|
static int _e_util_wakeup_cb(void *data);
|
||||||
|
|
||||||
|
@ -906,7 +907,20 @@ e_util_dir_check(const char *dir)
|
||||||
return 1;
|
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 */
|
/* local subsystem functions */
|
||||||
|
static int
|
||||||
|
_e_util_cb_delayed_del(void *data)
|
||||||
|
{
|
||||||
|
e_object_del(E_OBJECT(data));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_e_util_container_fake_mouse_up_cb(void *data)
|
_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 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 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 int e_util_dir_check(const char *dir);
|
||||||
|
EAPI void e_util_defer_object_del(E_Object *obj);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue