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

@@ -7,12 +7,22 @@ static void _button_cb_return(void *data, Evas_Object *obj,
static void _button_cb_begin(void *data, Evas_Object *obj,
const char *emission,
const char *source);
static void _combo_cb_clicked(void *data, Evas_Object *obj,
const char *emission,
const char *source);
static void _combo_cb_clicked(void *data, Evas_Object *obj, void *event_info);
static void _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
_page_del(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj,
void *ev __UNUSED__)
{
Ecdb_Image_Project *proj;
proj = evas_object_data_get(obj, "proj");
if (proj)
ecdb_image_project_destroy(proj);
}
static void
_page_hide_finished(void *data, Evas_Object *o, const char *emission __UNUSED__,
@@ -134,8 +144,7 @@ _button_cb_begin(void *data, Evas_Object *obj __UNUSED__,
static void
_combo_cb_clicked(void *data, Evas_Object *obj __UNUSED__,
const char *emission __UNUSED__,
const char *source __UNUSED__)
void *event_info __UNUSED__)
{
Evas_Object *b;
Ecdb_Burn_Project *bp;
@@ -148,7 +157,12 @@ _combo_cb_clicked(void *data, Evas_Object *obj __UNUSED__,
if (sel < 0)
return;
drive = eina_list_nth(em->drives, sel);
ECDB_PROJECT(bp)->drive = drive = eina_list_nth(em->drives, sel);
/* Don't keep adding items to the combo if the drive hasn't changed */
if (drive == ecdb_combo_data_get(bp->speed_combo))
return;
num_speeds = drive->write_speeds[0];
ecdb_combo_data_set(bp->speed_combo, drive);
for (i = 1; i < num_speeds; i++)
@@ -199,6 +213,8 @@ ecdb_burn_image_page_show(Ecdb_Page *page)
evas_object_move(page->gui, x, y);
evas_object_resize(page->image, w, h);
edje_object_part_swallow(page->gui, "action_area", page->image);
evas_object_event_callback_add(page->image, EVAS_CALLBACK_DEL, _page_del,
page);
edje_object_signal_callback_add(page->image, "hide,finished",
"burn_image_page",
_page_hide_finished, page->gui);
@@ -245,8 +261,7 @@ ecdb_burn_image_page_show(Ecdb_Page *page)
{
b = ecdb_combo_item_add(bp->drive_combo, NULL);
ecdb_combo_item_label_set(b, drive->product);
edje_object_signal_callback_add(b, "mouse,clicked,1", "*",
_combo_cb_clicked, proj);
evas_object_smart_callback_add(b, "clicked", _combo_cb_clicked, proj);
ecdb_combo_append(bp->drive_combo, b);
evas_object_show(b);
}