Fix some crashes and a bunch of memory leaks/errors. There are still a few memory leaks originating deep within ewl somewhere. Also, if you don't open the config_inwin before closing the program, there are some errors.

This commit is contained in:
Jaime Thomas
2009-02-06 04:03:13 +00:00
parent 22a49f6d1b
commit 9ebf4666e3
7 changed files with 144 additions and 39 deletions

View File

@@ -10,6 +10,35 @@ static void ecdb_filelist_focus_handle(int action, Evas_Object *fl,
static void ecdb_welcome_page_hide_finished(void *data, Evas_Object *o,
const char *emission,
const char *source);
static void _page_del(void *data, Evas *e, Evas_Object *obj, void *ev);
static void _filelist_del(Ewl_Widget *w, void *ev_data, void *data);
static void
_filelist_del(Ewl_Widget *w, void *ev_data __UNUSED__, void *data __UNUSED__)
{
Ewl_Filelist_Filter *f;
f = ewl_filelist_filter_get(EWL_FILELIST(w));
if (f)
{
if (f->extension)
free(f->extension);
free(f);
}
}
static void
_page_del(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__,
void *ev __UNUSED__)
{
Ecdb_Page *page;
page = data;
if (!page)
return;
free(page);
}
/* XXX These need to be fixed when Ecdb_Page become the swallow,
* whereas it is the actual gui as well
@@ -245,6 +274,8 @@ ecdb_create_main_gui(void)
evas_object_resize(em->page->gui, mw, mh);
ecore_evas_resize(em->main_win_ee, mw, mh);
ecore_evas_size_min_set(em->main_win_ee, mw, mh);
evas_object_event_callback_add(em->page->gui, EVAS_CALLBACK_DEL, _page_del,
em->page);
evas_object_move(em->page->gui, 0, 0);
evas_object_show(em->page->gui);
@@ -337,16 +368,18 @@ ecdb_handle_typebuf(Evas_Object *gui, Ewl_Widget *fl)
{
filter = calloc(sizeof(Ewl_Filelist_Filter), 1);
}
if (filter->extension)
else
{
if (strcmp(filter->extension, ext))
if (filter->extension)
{
FREE(filter->extension);
}
else
{
return;
if (strcmp(filter->extension, ext))
{
FREE(filter->extension);
}
else
{
return;
}
}
}
@@ -455,6 +488,8 @@ ecdb_filelist_show(Ecdb_Page *page)
filelist = ewl_filelist_new();
ewl_container_child_append(EWL_CONTAINER(embed), filelist);
ewl_callback_prepend(EWL_WIDGET(filelist), EWL_CALLBACK_DESTROY,
_filelist_del, NULL);
ewl_filelist_directory_set(EWL_FILELIST(filelist), getenv("HOME"));
ewl_widget_show(filelist);