Sync with efreet and some cleanup

SVN revision: 47478
This commit is contained in:
Sebastian Dransfeld 2010-03-26 05:34:34 +00:00
parent 93d2e401c1
commit 779ef9e24a
14 changed files with 154 additions and 183 deletions

View File

@ -41,7 +41,7 @@ e_configure_init(void)
handlers = eina_list_append handlers = eina_list_append
(handlers, ecore_event_handler_add (handlers, ecore_event_handler_add
(EFREET_EVENT_CACHE_UPDATE, _e_configure_cb_efreet_desktop_cache_update, NULL)); (EFREET_EVENT_CACHE_UPDATE, _e_configure_cb_efreet_desktop_cache_update, NULL));
_e_configure_efreet_desktop_update(); //_e_configure_efreet_desktop_update();
} }
static void static void

View File

@ -9,9 +9,7 @@ static void _e_order_cb_monitor (void *data, Ecore_File_Monitor *em, Ecore_File_
static void _e_order_read (E_Order *eo); static void _e_order_read (E_Order *eo);
static void _e_order_save (E_Order *eo); static void _e_order_save (E_Order *eo);
#if 0 static int _e_order_cb_efreet_cache_update(void *data, int ev_type, void *ev);
static int _e_order_cb_efreet_desktop_change(void *data, int ev_type, void *ev);
#endif
static Eina_List *orders = NULL; static Eina_List *orders = NULL;
static Eina_List *handlers = NULL; static Eina_List *handlers = NULL;
@ -20,9 +18,7 @@ static Eina_List *handlers = NULL;
EAPI int EAPI int
e_order_init(void) e_order_init(void)
{ {
#if 0 handlers = eina_list_append(handlers, ecore_event_handler_add(EFREET_EVENT_CACHE_UPDATE, _e_order_cb_efreet_cache_update, NULL));
handlers = eina_list_append(handlers, ecore_event_handler_add(EFREET_EVENT_DESKTOP_CHANGE, _e_order_cb_efreet_desktop_change, NULL));
#endif
efreet_menu_file_set(e_config->default_system_menu); efreet_menu_file_set(e_config->default_system_menu);
return 1; return 1;
} }
@ -263,67 +259,17 @@ _e_order_save(E_Order *eo)
fclose(f); fclose(f);
} }
#if 0
static int static int
_e_order_cb_efreet_desktop_change(void *data, int ev_type, void *ev) _e_order_cb_efreet_cache_update(void *data, int ev_type, void *ev)
{ {
Efreet_Event_Desktop_Change *event;
Eina_List *l; Eina_List *l;
E_Order *eo; E_Order *eo;
event = ev; /* reread all .order files */
switch (event->change) EINA_LIST_FOREACH(orders, l, eo)
{ {
case EFREET_DESKTOP_CHANGE_ADD: _e_order_read(eo);
/* If a desktop is added, reread all .order files */ if (eo->cb.update) eo->cb.update(eo->cb.data, eo);
EINA_LIST_FOREACH(orders, l, eo)
{
_e_order_read(eo);
if (eo->cb.update) eo->cb.update(eo->cb.data, eo);
}
break;
case EFREET_DESKTOP_CHANGE_REMOVE:
/* If a desktop is removed, drop the .desktop pointer */
EINA_LIST_FOREACH(orders, l, eo)
{
Eina_List *l2;
Efreet_Desktop *desktop;
int changed = 0;
EINA_LIST_FOREACH(eo->desktops, l2, desktop)
{
if (desktop == event->current)
{
efreet_desktop_free(desktop);
eo->desktops = eina_list_remove_list(eo->desktops, l2);
changed = 1;
}
}
if ((changed) && (eo->cb.update)) eo->cb.update(eo->cb.data, eo);
}
break;
case EFREET_DESKTOP_CHANGE_UPDATE:
/* If a desktop is updated, point to the new desktop and update */
EINA_LIST_FOREACH(orders, l, eo)
{
Eina_List *l2;
Efreet_Desktop *desktop;
int changed = 0;
EINA_LIST_FOREACH(eo->desktops, l2, desktop)
{
if (desktop == event->previous)
{
efreet_desktop_free(desktop);
efreet_desktop_ref(event->current);
l2->data = event->current;
changed = 1;
}
}
if ((changed) && (eo->cb.update)) eo->cb.update(eo->cb.data, eo);
}
break;
} }
return 1; return 1;
} }
#endif

View File

@ -304,8 +304,6 @@ _load_order(const char *path)
efreet_desktop_ref(l->data); efreet_desktop_ref(l->data);
apps = eina_list_append(apps, l->data); apps = eina_list_append(apps, l->data);
} }
/* FIXME: The test below will never be true ! */
if (l) eina_list_free(l);
e_object_del(E_OBJECT(order)); e_object_del(E_OBJECT(order));
return apps; return apps;
} }
@ -327,11 +325,9 @@ _fill_apps(E_Config_Dialog_Data *cfdata)
EINA_LIST_FREE(desks, desk) EINA_LIST_FREE(desks, desk)
{ {
if (!eina_list_search_unsorted(l, _cb_sort_desks, desk)) if (!eina_list_search_unsorted(l, _cb_sort_desks, desk))
{ l = eina_list_append(l, desk);
efreet_desktop_ref(desk); else
l = eina_list_append(l, desk); efreet_desktop_free(desk);
}
efreet_desktop_free(desk);
} }
l = eina_list_sort(l, 0, _cb_sort_desks); l = eina_list_sort(l, 0, _cb_sort_desks);
@ -493,6 +489,7 @@ _cb_add(void *data, void *data2)
icon = e_util_desktop_icon_add(desk, 24, evas); icon = e_util_desktop_icon_add(desk, 24, evas);
e_widget_ilist_append(cfdata->o_sel, icon, desk->name, e_widget_ilist_append(cfdata->o_sel, icon, desk->name,
_sel_list_cb_selected, cfdata, desk->orig_path); _sel_list_cb_selected, cfdata, desk->orig_path);
efreet_desktop_free(desk);
} }
e_widget_ilist_go(cfdata->o_sel); e_widget_ilist_go(cfdata->o_sel);
@ -564,6 +561,7 @@ _cb_up(void *data, void *data2)
_sel_list_cb_selected, cfdata, _sel_list_cb_selected, cfdata,
desk->orig_path, (sel - 1)); desk->orig_path, (sel - 1));
e_widget_ilist_selected_set(cfdata->o_sel, (sel - 1)); e_widget_ilist_selected_set(cfdata->o_sel, (sel - 1));
efreet_desktop_free(desk);
} }
} }
e_widget_ilist_go(cfdata->o_sel); e_widget_ilist_go(cfdata->o_sel);
@ -604,6 +602,7 @@ _cb_down(void *data, void *data2)
_sel_list_cb_selected, cfdata, _sel_list_cb_selected, cfdata,
desk->orig_path, sel); desk->orig_path, sel);
e_widget_ilist_selected_set(cfdata->o_sel, (sel + 1)); e_widget_ilist_selected_set(cfdata->o_sel, (sel + 1));
efreet_desktop_free(desk);
} }
} }
e_widget_ilist_go(cfdata->o_sel); e_widget_ilist_go(cfdata->o_sel);
@ -633,6 +632,7 @@ _save_menu(E_Config_Dialog_Data *cfdata)
desk = efreet_util_desktop_name_find(lbl); desk = efreet_util_desktop_name_find(lbl);
if (!desk) continue; if (!desk) continue;
efreet_menu_desktop_insert(menu, desk, -1); efreet_menu_desktop_insert(menu, desk, -1);
efreet_desktop_free(desk);
} }
ret = efreet_menu_save(menu, cfdata->data->filename); ret = efreet_menu_save(menu, cfdata->data->filename);
efreet_menu_free(menu); efreet_menu_free(menu);
@ -660,6 +660,7 @@ _save_order(E_Config_Dialog_Data *cfdata)
desk = efreet_util_desktop_name_find(lbl); desk = efreet_util_desktop_name_find(lbl);
if (!desk) continue; if (!desk) continue;
e_order_append(order, desk); e_order_append(order, desk);
efreet_desktop_free(desk);
} }
e_object_del(E_OBJECT(order)); e_object_del(E_OBJECT(order));
return 1; return 1;

View File

@ -343,7 +343,10 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
Efreet_Desktop *desktop; Efreet_Desktop *desktop;
desktop = efreet_util_desktop_exec_find(imc->e_im_setup_exec); desktop = efreet_util_desktop_exec_find(imc->e_im_setup_exec);
if (desktop) if (desktop)
icon = e_util_desktop_icon_add(desktop, 48, evas); {
icon = e_util_desktop_icon_add(desktop, 48, evas);
efreet_desktop_free(desktop);
}
} }
e_widget_ilist_append(cfdata->gui.imc_basic_list, icon, imc->e_im_name, NULL, NULL, imc_path); e_widget_ilist_append(cfdata->gui.imc_basic_list, icon, imc->e_im_name, NULL, NULL, imc_path);

View File

@ -359,6 +359,7 @@ _e_exebuf_exe_free(E_Exebuf_Exe *exe)
evas_object_del(exe->bg_object); evas_object_del(exe->bg_object);
if (exe->icon_object) evas_object_del(exe->icon_object); if (exe->icon_object) evas_object_del(exe->icon_object);
if (exe->desktop) efreet_desktop_free(exe->desktop);
free(exe); free(exe);
} }
@ -370,7 +371,7 @@ _e_exebuf_matches_clear(void)
char *file; char *file;
EINA_LIST_FREE(eap_matches, desktop) EINA_LIST_FREE(eap_matches, desktop)
e_object_unref(E_OBJECT(desktop)); efreet_desktop_free(desktop);
EINA_LIST_FREE(exe_matches, file) EINA_LIST_FREE(exe_matches, file)
free(file); free(file);
@ -418,6 +419,7 @@ _e_exebuf_update(void)
icon_object = o; icon_object = o;
edje_object_part_swallow(bg_object, "e.swallow.icons", o); edje_object_part_swallow(bg_object, "e.swallow.icons", o);
evas_object_show(o); evas_object_show(o);
efreet_desktop_free(desktop);
} }
} }
@ -1035,8 +1037,12 @@ _e_exebuf_matches_update(void)
added = eina_hash_string_superfast_new(NULL); added = eina_hash_string_superfast_new(NULL);
eina_hash_add(added, exe, desktop); eina_hash_add(added, exe, desktop);
} }
free(exe); else
efreet_desktop_free(desktop);
free(exe);
} }
else
efreet_desktop_free(desktop);
} }
snprintf(buf, sizeof(buf), "%s*", cmd_buf); snprintf(buf, sizeof(buf), "%s*", cmd_buf);
@ -1054,8 +1060,12 @@ _e_exebuf_matches_update(void)
added = eina_hash_string_superfast_new(NULL); added = eina_hash_string_superfast_new(NULL);
eina_hash_add(added, exe, desktop); eina_hash_add(added, exe, desktop);
} }
else
efreet_desktop_free(desktop);
free(exe); free(exe);
} }
else
efreet_desktop_free(desktop);
} }
snprintf(buf, sizeof(buf), "*%s*", cmd_buf); snprintf(buf, sizeof(buf), "*%s*", cmd_buf);
@ -1073,8 +1083,12 @@ _e_exebuf_matches_update(void)
added = eina_hash_string_superfast_new(NULL); added = eina_hash_string_superfast_new(NULL);
eina_hash_add(added, exe, desktop); eina_hash_add(added, exe, desktop);
} }
else
efreet_desktop_free(desktop);
free(exe); free(exe);
} }
else
efreet_desktop_free(desktop);
} }
snprintf(buf, sizeof(buf), "*%s*", cmd_buf); snprintf(buf, sizeof(buf), "*%s*", cmd_buf);
@ -1092,8 +1106,12 @@ _e_exebuf_matches_update(void)
added = eina_hash_string_superfast_new(NULL); added = eina_hash_string_superfast_new(NULL);
eina_hash_add(added, exe, desktop); eina_hash_add(added, exe, desktop);
} }
else
efreet_desktop_free(desktop);
free(exe); free(exe);
} }
else
efreet_desktop_free(desktop);
} }
if (added) eina_hash_free(added); if (added) eina_hash_free(added);
@ -1246,7 +1264,7 @@ _e_exebuf_hist_update(Eina_List *hist_matches)
Evas_Coord mw, mh; Evas_Coord mw, mh;
Evas_Object *o; Evas_Object *o;
Efreet_Desktop *desktop; Efreet_Desktop *desktop;
int found = 0; Efreet_Desktop *found = NULL;
int len; int len;
char *tmp; char *tmp;
char match[4096]; char match[4096];
@ -1274,15 +1292,14 @@ _e_exebuf_hist_update(Eina_List *hist_matches)
EINA_LIST_FREE(ll, desktop) EINA_LIST_FREE(ll, desktop)
{ {
if (desktop->exec && !strncmp(file, desktop->exec, len)) if (desktop->exec && !strncmp(file, desktop->exec, len))
{ found = desktop;
found = 1; else
break; efreet_desktop_free(desktop);
}
} }
if (found) if (found)
{ {
exe->desktop = desktop; exe->desktop = found;
edje_object_part_text_set(o, "e.text.title", desktop->name); edje_object_part_text_set(o, "e.text.title", desktop->name);
if (edje_object_part_exists(exe->bg_object, "e.swallow.icons")) if (edje_object_part_exists(exe->bg_object, "e.swallow.icons"))

View File

@ -666,11 +666,13 @@ _e_fwin_suggested_apps_list_get(Eina_List *files, Eina_List **mime_list)
apps = eina_list_merge(apps, efreet_util_desktop_mime_list(mime)); apps = eina_list_merge(apps, efreet_util_desktop_mime_list(mime));
/* 4. create a new list without duplicates */ /* 4. create a new list without duplicates */
EINA_LIST_FOREACH(apps, l, desk) EINA_LIST_FREE(apps, desk)
if (!eina_list_data_find(ret, desk)) {
ret = eina_list_append(ret, desk); if (!eina_list_data_find(ret, desk))
ret = eina_list_append(ret, desk);
if (apps) apps = eina_list_free(apps); else
efreet_desktop_free(desk);
}
if (mime_list) if (mime_list)
*mime_list = mlist; *mime_list = mlist;
@ -1245,6 +1247,8 @@ _e_fwin_cb_all_change(void *data, Evas_Object *obj)
desktop = efreet_util_desktop_file_id_find(fad->app2); desktop = efreet_util_desktop_file_id_find(fad->app2);
if ((desktop) && (desktop->exec)) if ((desktop) && (desktop->exec))
e_widget_entry_text_set(fad->o_entry, desktop->exec); e_widget_entry_text_set(fad->o_entry, desktop->exec);
if (desktop)
efreet_desktop_free(desktop);
} }
static void static void
@ -1842,7 +1846,7 @@ _e_fwin_file_open_dialog(E_Fwin_Page *page, Eina_List *files, int always)
e_widget_ilist_freeze(o); e_widget_ilist_freeze(o);
// Adding Specific Applications list into widget // Adding Specific Applications list into widget
if(apps) if (apps)
e_widget_ilist_header_append(o, NULL, _("Specific Applications")); e_widget_ilist_header_append(o, NULL, _("Specific Applications"));
EINA_LIST_FOREACH(apps, l, desk) EINA_LIST_FOREACH(apps, l, desk)
{ {
@ -1858,12 +1862,16 @@ _e_fwin_file_open_dialog(E_Fwin_Page *page, Eina_List *files, int always)
cats = efreet_util_desktop_name_glob_list("*"); cats = efreet_util_desktop_name_glob_list("*");
cats = eina_list_sort(cats, 0, _e_fwin_dlg_cb_desk_sort); cats = eina_list_sort(cats, 0, _e_fwin_dlg_cb_desk_sort);
EINA_LIST_FREE(cats, desk) EINA_LIST_FREE(cats, desk)
{
if (!eina_list_data_find(l, desk) && !eina_list_data_find(apps, desk)) if (!eina_list_data_find(l, desk) && !eina_list_data_find(apps, desk))
l = eina_list_append(l, desk); l = eina_list_append(l, desk);
else
efreet_desktop_free(desk);
}
l = eina_list_sort(l, -1, _e_fwin_dlg_cb_desk_list_sort); l = eina_list_sort(l, -1, _e_fwin_dlg_cb_desk_list_sort);
// Adding All Applications list into widget // Adding All Applications list into widget
if(l) if (l)
e_widget_ilist_header_append(o, NULL, _("All Applications")); e_widget_ilist_header_append(o, NULL, _("All Applications"));
EINA_LIST_FREE(l, desk) EINA_LIST_FREE(l, desk)
{ {
@ -1873,9 +1881,11 @@ _e_fwin_file_open_dialog(E_Fwin_Page *page, Eina_List *files, int always)
icon = e_util_desktop_icon_add(desk, 24, evas); icon = e_util_desktop_icon_add(desk, 24, evas);
e_widget_ilist_append(o, icon, desk->name, NULL, NULL, e_widget_ilist_append(o, icon, desk->name, NULL, NULL,
efreet_util_path_to_file_id(desk->orig_path)); efreet_util_path_to_file_id(desk->orig_path));
efreet_desktop_free(desk);
} }
eina_list_free(apps); EINA_LIST_FREE(apps, desk)
efreet_desktop_free(desk);
e_widget_ilist_go(o); e_widget_ilist_go(o);
e_widget_ilist_thaw(o); e_widget_ilist_thaw(o);
@ -1943,14 +1953,17 @@ _e_fwin_cb_exec_cmd_changed(void *data, void *data2)
if (!(fad = data)) return; if (!(fad = data)) return;
if (fad->app2) if (fad->app2)
desktop = efreet_util_desktop_file_id_find(fad->app2); desktop = efreet_util_desktop_file_id_find(fad->app2);
if (!desktop) return; if (!desktop) return;
if (!strcmp(desktop->exec, fad->exec_cmd)) return; if (strcmp(desktop->exec, fad->exec_cmd))
{
eina_stringshare_del(fad->app2); eina_stringshare_del(fad->app2);
if (fad->o_all) e_widget_ilist_unselect(fad->o_all); fad->app2 = NULL;
if (fad->o_all) e_widget_ilist_unselect(fad->o_all);
}
efreet_desktop_free(desktop);
} }
@ -1964,7 +1977,11 @@ _e_fwin_cb_open(void *data, E_Dialog *dia)
if (fad->app2) if (fad->app2)
desktop = efreet_util_desktop_file_id_find(fad->app2); desktop = efreet_util_desktop_file_id_find(fad->app2);
if ((!desktop) && (!fad->exec_cmd)) return; if ((!desktop) && (!fad->exec_cmd))
{
if (desktop) efreet_desktop_free(desktop);
return;
}
// Create a fake .desktop for custom command. // Create a fake .desktop for custom command.
if (!desktop) if (!desktop)
@ -1985,9 +2002,7 @@ _e_fwin_cb_open(void *data, E_Dialog *dia)
if ((desktop) || (strcmp(fad->exec_cmd, ""))) if ((desktop) || (strcmp(fad->exec_cmd, "")))
_e_fwin_desktop_run(desktop, fad->fwin->cur_page, EINA_FALSE); _e_fwin_desktop_run(desktop, fad->fwin->cur_page, EINA_FALSE);
// Free fake .desktop efreet_desktop_free(desktop);
if (!strcmp(fad->exec_cmd, ""))
efreet_desktop_free(desktop);
e_object_del(E_OBJECT(fad->dia)); e_object_del(E_OBJECT(fad->dia));
} }

View File

@ -61,10 +61,7 @@ static void _il_home_apps_populate(void);
static void _il_home_apps_unpopulate(void); static void _il_home_apps_unpopulate(void);
static void _il_home_fmc_set(Evas_Object *obj); static void _il_home_fmc_set(Evas_Object *obj);
static void _il_home_desks_populate(void); static void _il_home_desks_populate(void);
#if 0 static int _il_home_desktop_cache_update(void *data, int type, void *event);
static int _il_home_desktop_list_change(void *data, int type, void *event);
static int _il_home_desktop_change(void *data, int type, void *event);
#endif
static int _il_home_update_deferred(void *data); static int _il_home_update_deferred(void *data);
static int _il_home_win_cb_exe_del(void *data, int type, void *event); static int _il_home_win_cb_exe_del(void *data, int type, void *event);
static E_Border *_il_home_desktop_find_border(E_Zone *zone, Efreet_Desktop *desktop); static E_Border *_il_home_desktop_find_border(E_Zone *zone, Efreet_Desktop *desktop);
@ -100,18 +97,11 @@ e_modapi_init(E_Module *m)
_il_home_apps_unpopulate(); _il_home_apps_unpopulate();
_il_home_apps_populate(); _il_home_apps_populate();
#if 0
handlers = handlers =
eina_list_append(handlers, eina_list_append(handlers,
ecore_event_handler_add(EFREET_EVENT_DESKTOP_LIST_CHANGE, ecore_event_handler_add(EFREET_EVENT_CACHE_UPDATE,
_il_home_desktop_list_change, _il_home_desktop_cache_update,
NULL)); NULL));
handlers =
eina_list_append(handlers,
ecore_event_handler_add(EFREET_EVENT_DESKTOP_CHANGE,
_il_home_desktop_change, NULL));
#endif
handlers = handlers =
eina_list_append(handlers, eina_list_append(handlers,
ecore_event_handler_add(E_EVENT_BORDER_ADD, ecore_event_handler_add(E_EVENT_BORDER_ADD,
@ -150,7 +140,8 @@ e_modapi_shutdown(E_Module *m)
exe->handle = NULL; exe->handle = NULL;
} }
if (exe->timeout) ecore_timer_del(exe->timeout); if (exe->timeout) ecore_timer_del(exe->timeout);
E_FREE(exe); if (exe->desktop) efreet_desktop_free(exe->desktop);
E_FREE(exe);
} }
_il_home_apps_unpopulate(); _il_home_apps_unpopulate();
@ -659,31 +650,22 @@ _il_home_desks_populate(void)
num++; num++;
} }
} }
efreet_menu_free(menu);
} }
} }
#if 0
static int static int
_il_home_desktop_list_change(void *data, int type, void *event) _il_home_desktop_cache_update(void *data, int type, void *event)
{ {
_il_home_apps_unpopulate();
if (defer) ecore_timer_del(defer); if (defer) ecore_timer_del(defer);
defer = ecore_timer_add(1.0, _il_home_update_deferred, NULL); defer = ecore_timer_add(1.0, _il_home_update_deferred, NULL);
return 1; return 1;
} }
static int
_il_home_desktop_change(void *data, int type, void *event)
{
if (defer) ecore_timer_del(defer);
defer = ecore_timer_add(1.0, _il_home_update_deferred, NULL);
return 1;
}
#endif
static int static int
_il_home_update_deferred(void *data) _il_home_update_deferred(void *data)
{ {
_il_home_apps_unpopulate();
_il_home_apps_populate(); _il_home_apps_populate();
defer = NULL; defer = NULL;
return 0; return 0;
@ -708,6 +690,7 @@ _il_home_win_cb_exe_del(void *data, int type, void *event)
} }
exes = eina_list_remove_list(exes, l); exes = eina_list_remove_list(exes, l);
if (exe->timeout) ecore_timer_del(exe->timeout); if (exe->timeout) ecore_timer_del(exe->timeout);
if (exe->desktop) efreet_desktop_free(exe->desktop);
E_FREE(exe); E_FREE(exe);
return 1; return 1;
} }
@ -787,7 +770,8 @@ _il_home_win_cb_timeout(void *data)
if (!exe->border) if (!exe->border)
{ {
exes = eina_list_remove(exes, exe); exes = eina_list_remove(exes, exe);
E_FREE(exe); if (exe->desktop) efreet_desktop_free(exe->desktop);
E_FREE(exe);
return 0; return 0;
} }
exe->timeout = NULL; exe->timeout = NULL;

View File

@ -164,6 +164,8 @@ _il_kbd_config_ui(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata
} }
nn++; nn++;
} }
EINA_LIST_FREE(kbds, desktop)
efreet_desktop_free(desktop);
} }
} }
@ -181,14 +183,15 @@ _il_kbd_config_ui(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata
int nn = 2; int nn = 2;
kbds = efreet_util_desktop_category_list("Keyboard"); kbds = efreet_util_desktop_category_list("Keyboard");
EINA_LIST_FOREACH(kbds, l, desktop) EINA_LIST_FREE(kbds, desktop)
{ {
ow = e_widget_radio_add(evas, desktop->name, nn, rg); ow = e_widget_radio_add(evas, desktop->name, nn, rg);
e_widget_framelist_object_append(of, ow); e_widget_framelist_object_append(of, ow);
evas_object_smart_callback_add(ow, "changed", evas_object_smart_callback_add(ow, "changed",
_il_kbd_config_changed, NULL); _il_kbd_config_changed, NULL);
efreet_desktop_free(desktop);
nn++; nn++;
} }
} }
e_widget_list_object_append(list, of, 1, 0, 0.0); e_widget_list_object_append(list, of, 1, 0, 0.0);
return list; return list;
@ -239,6 +242,8 @@ _il_kbd_config_change_timeout(void *data)
} }
nn++; nn++;
} }
EINA_LIST_FREE(kbds, desktop)
efreet_desktop_free(desktop);
} }
} }

View File

@ -71,12 +71,13 @@ _il_kbd_start(void)
desktop = efreet_util_desktop_file_id_find(il_kbd_cfg->run_keyboard); desktop = efreet_util_desktop_file_id_find(il_kbd_cfg->run_keyboard);
if (!desktop) if (!desktop)
{ {
Efreet_Desktop *d;
Eina_List *kbds, *l; Eina_List *kbds, *l;
kbds = efreet_util_desktop_category_list("Keyboard"); kbds = efreet_util_desktop_category_list("Keyboard");
if (kbds) if (kbds)
{ {
EINA_LIST_FOREACH(kbds, l, desktop) EINA_LIST_FOREACH(kbds, l, d)
{ {
const char *dname; const char *dname;
@ -84,9 +85,15 @@ _il_kbd_start(void)
if (dname) if (dname)
{ {
if (!strcmp(dname, il_kbd_cfg->run_keyboard)) if (!strcmp(dname, il_kbd_cfg->run_keyboard))
break; {
desktop = d;
efreet_desktop_ref(desktop);
break;
}
} }
} }
EINA_LIST_FREE(kbds, d)
efreet_desktop_free(d);
} }
} }
if (desktop) if (desktop)
@ -102,6 +109,7 @@ _il_kbd_start(void)
ecore_event_handler_add(ECORE_EXE_EVENT_DEL, ecore_event_handler_add(ECORE_EXE_EVENT_DEL,
_il_kbd_cb_exit, NULL); _il_kbd_cb_exit, NULL);
} }
efreet_desktop_free(desktop);
} }
} }
} }

View File

@ -1013,7 +1013,7 @@ static int _e_cfg_keyboard_change_timeout(void *data)
if (kbds) if (kbds)
{ {
nn = 2; nn = 2;
EINA_LIST_FOREACH(kbds, l, desktop) EINA_LIST_FREE(kbds, desktop)
{ {
const char *dname; const char *dname;
@ -1024,13 +1024,15 @@ static int _e_cfg_keyboard_change_timeout(void *data)
illume_cfg->kbd.run_keyboard = eina_stringshare_add(dname); illume_cfg->kbd.run_keyboard = eina_stringshare_add(dname);
break; break;
} }
efreet_desktop_free(desktop);
nn++; nn++;
} }
} }
} }
e_mod_win_cfg_kbd_update(); e_mod_win_cfg_kbd_update();
e_config_save_queue(); e_config_save_queue();
_e_cfg_keyboard_change_timer = NULL; return 0; _e_cfg_keyboard_change_timer = NULL;
return 0;
} }
static void static void
_e_cfg_keyboard_change(void *data, Evas_Object *obj, void *event_info) { _e_cfg_keyboard_change(void *data, Evas_Object *obj, void *event_info) {
@ -1078,7 +1080,7 @@ _e_cfg_keyboard_ui(E_Config_Dialog *cfd, Evas *e, E_Config_Dialog_Data *cfdata)
if (kbds) if (kbds)
{ {
nn = 2; nn = 2;
EINA_LIST_FOREACH(kbds, l, desktop) EINA_LIST_FREE(kbds, desktop)
{ {
const char *dname; const char *dname;
@ -1091,6 +1093,7 @@ _e_cfg_keyboard_ui(E_Config_Dialog *cfd, Evas *e, E_Config_Dialog_Data *cfdata)
break; break;
} }
} }
efreet_desktop_free(desktop);
nn++; nn++;
} }
} }
@ -1110,11 +1113,12 @@ _e_cfg_keyboard_ui(E_Config_Dialog *cfd, Evas *e, E_Config_Dialog_Data *cfdata)
int nn = 2; int nn = 2;
kbds = efreet_util_desktop_category_list("Keyboard"); kbds = efreet_util_desktop_category_list("Keyboard");
EINA_LIST_FOREACH(kbds, l, desktop) EINA_LIST_FREE(kbds, desktop)
{ {
o = e_widget_radio_add(e, desktop->name, nn, rg); o = e_widget_radio_add(e, desktop->name, nn, rg);
e_widget_framelist_object_append(frame, o); e_widget_framelist_object_append(frame, o);
evas_object_smart_callback_add(o, "changed", _e_cfg_keyboard_change, NULL); evas_object_smart_callback_add(o, "changed", _e_cfg_keyboard_change, NULL);
efreet_desktop_free(desktop);
nn++; nn++;
} }
} }

View File

@ -59,6 +59,7 @@ _e_fluanch_cb_app_button(void *data)
desktop = efreet_util_desktop_file_id_find(fla->desktop); desktop = efreet_util_desktop_file_id_find(fla->desktop);
if (!desktop) return; if (!desktop) return;
if (fla->flaunch->desktop_run_func) fla->flaunch->desktop_run_func(desktop); if (fla->flaunch->desktop_run_func) fla->flaunch->desktop_run_func(desktop);
efreet_desktop_free(desktop);
} }
static E_Flaunch_App * static E_Flaunch_App *
@ -76,6 +77,7 @@ _e_flaunch_app_add(E_Flaunch *fl, const char *deskfile)
e_box_pack_end(fl->app_box_obj, fla->obj); e_box_pack_end(fl->app_box_obj, fla->obj);
e_box_pack_options_set(fla->obj, 1, 1, 1, 1, 0.5, 0.5, 0, 0, 9999, 9999); e_box_pack_options_set(fla->obj, 1, 1, 1, 1, 0.5, 0.5, 0, 0, 9999, 9999);
evas_object_show(fla->obj); evas_object_show(fla->obj);
if (desktop) efreet_desktop_free(desktop);
return fla; return fla;
} }
@ -132,6 +134,8 @@ _e_flaunch_apps_populate(E_Flaunch *fl)
} }
if (num >= max) break; if (num >= max) break;
} }
EINA_LIST_FREE(bar_desktops, desktop)
efreet_desktop_free(desktop);
} }
while (num < max) while (num < max)
{ {
@ -190,9 +194,8 @@ _e_flaunch_cb_delayed_repopulate(void *data)
return 0; return 0;
} }
#if 0
static int static int
_e_flaunch_cb_desktop_list_change(void *data, int type, void *event) _e_flaunch_cb_cache_update(void *data, int type, void *event)
{ {
E_Flaunch *fl; E_Flaunch *fl;
@ -202,18 +205,6 @@ _e_flaunch_cb_desktop_list_change(void *data, int type, void *event)
return 1; return 1;
} }
static int
_e_flaunch_cb_desktop_change(void *data, int type, void *event)
{
E_Flaunch *fl;
fl = data;
if (fl->repopulate_timer) ecore_timer_del(fl->repopulate_timer);
fl->repopulate_timer = ecore_timer_add(0.5, _e_flaunch_cb_delayed_repopulate, fl);
return 1;
}
#endif
EAPI int EAPI int
e_flaunch_init(void) e_flaunch_init(void)
{ {
@ -271,14 +262,9 @@ e_flaunch_new(E_Zone *zone, const char *themedir)
fl->handlers = eina_list_append fl->handlers = eina_list_append
(fl->handlers, ecore_event_handler_add (fl->handlers, ecore_event_handler_add
(E_EVENT_ZONE_MOVE_RESIZE, _e_flaunch_cb_zone_move_resize, fl)); (E_EVENT_ZONE_MOVE_RESIZE, _e_flaunch_cb_zone_move_resize, fl));
#if 0
fl->handlers = eina_list_append fl->handlers = eina_list_append
(fl->handlers, ecore_event_handler_add (fl->handlers, ecore_event_handler_add
(EFREET_EVENT_DESKTOP_LIST_CHANGE, _e_flaunch_cb_desktop_list_change, fl)); (EFREET_EVENT_CACHE_UPDATE, _e_flaunch_cb_cache_update, fl));
fl->handlers = eina_list_append
(fl->handlers, ecore_event_handler_add
(EFREET_EVENT_DESKTOP_CHANGE, _e_flaunch_cb_desktop_change, fl));
#endif
return fl; return fl;
} }

View File

@ -51,10 +51,7 @@ static void _cb_slipwin_border_select(void *data, E_Slipwin *esw, E_Border *bd);
static void _cb_slipshelf_border_select(void *data, E_Slipshelf *ess, E_Border *bd); static void _cb_slipshelf_border_select(void *data, E_Slipshelf *ess, E_Border *bd);
static void _cb_slipshelf_border_home2(void *data, E_Slipshelf *ess, E_Border *pbd); static void _cb_slipshelf_border_home2(void *data, E_Slipshelf *ess, E_Border *pbd);
static void _cb_selected(void *data, Evas_Object *obj, void *event_info); static void _cb_selected(void *data, Evas_Object *obj, void *event_info);
#if 0 static int _cb_efreet_cache_update(void *data, int type, void *event);
static int _cb_efreet_desktop_list_change(void *data, int type, void *event);
static int _cb_efreet_desktop_change(void *data, int type, void *event);
#endif
static void _apps_unpopulate(void); static void _apps_unpopulate(void);
static void _apps_populate(void); static void _apps_populate(void);
static int _cb_update_deferred(void *data); static int _cb_update_deferred(void *data);
@ -159,14 +156,9 @@ _e_mod_win_init(E_Module *m)
handlers = eina_list_append handlers = eina_list_append
(handlers, ecore_event_handler_add (handlers, ecore_event_handler_add
(ECORE_EXE_EVENT_DEL, _cb_event_exe_del, NULL)); (ECORE_EXE_EVENT_DEL, _cb_event_exe_del, NULL));
#if 0
handlers = eina_list_append handlers = eina_list_append
(handlers, ecore_event_handler_add (handlers, ecore_event_handler_add
(EFREET_EVENT_DESKTOP_LIST_CHANGE, _cb_efreet_desktop_list_change, NULL)); (EFREET_EVENT_CACHE_UPDATE, _cb_efreet_cache_update, NULL));
handlers = eina_list_append
(handlers, ecore_event_handler_add
(EFREET_EVENT_DESKTOP_CHANGE, _cb_efreet_desktop_change, NULL));
#endif
handlers = eina_list_append handlers = eina_list_append
(handlers, ecore_event_handler_add (handlers, ecore_event_handler_add
(E_EVENT_ZONE_MOVE_RESIZE, _cb_zone_move_resize, NULL)); (E_EVENT_ZONE_MOVE_RESIZE, _cb_zone_move_resize, NULL));
@ -269,11 +261,12 @@ e_mod_win_cfg_kbd_start(void)
if (!desktop) if (!desktop)
{ {
Eina_List *kbds; Eina_List *kbds;
Efreet_Desktop *d;
kbds = efreet_util_desktop_category_list("Keyboard"); kbds = efreet_util_desktop_category_list("Keyboard");
if (kbds) if (kbds)
{ {
EINA_LIST_FOREACH(kbds, l, desktop) EINA_LIST_FREE(kbds, d)
{ {
const char *dname; const char *dname;
@ -281,8 +274,12 @@ e_mod_win_cfg_kbd_start(void)
if (dname) if (dname)
{ {
if (!strcmp(dname, illume_cfg->kbd.run_keyboard)) if (!strcmp(dname, illume_cfg->kbd.run_keyboard))
break; {
desktop = d;
efreet_desktop_ref(desktop);
}
} }
efreet_desktop_free(d);
} }
} }
} }
@ -294,6 +291,7 @@ e_mod_win_cfg_kbd_start(void)
_kbd_exe = exeinst->exe; _kbd_exe = exeinst->exe;
_kbd_exe_exit_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, _e_mod_win_win_cfg_kbd_cb_exit, NULL); _kbd_exe_exit_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, _e_mod_win_win_cfg_kbd_cb_exit, NULL);
} }
efreet_desktop_free(desktop);
} }
} }
} }
@ -672,6 +670,7 @@ _desktop_run(Efreet_Desktop *desktop)
ins = calloc(1, sizeof(Instance)); ins = calloc(1, sizeof(Instance));
if (!ins) return; if (!ins) return;
eins = e_exec(zone, desktop, NULL, NULL, "illume-launcher"); eins = e_exec(zone, desktop, NULL, NULL, "illume-launcher");
efreet_desktop_ref(desktop);
ins->desktop = desktop; ins->desktop = desktop;
if (eins) if (eins)
{ {
@ -945,7 +944,7 @@ static void
_apps_unpopulate(void) _apps_unpopulate(void)
{ {
char buf[PATH_MAX]; char buf[PATH_MAX];
Efreet_Desktop *desktop; Efreet_Desktop *desktop;
Evas_Object *obj; Evas_Object *obj;
Eina_List *files; Eina_List *files;
char *file; char *file;
@ -954,9 +953,6 @@ _apps_unpopulate(void)
EINA_LIST_FREE(sels, obj) EINA_LIST_FREE(sels, obj)
evas_object_del(obj); evas_object_del(obj);
EINA_LIST_FREE(desks, desktop)
efreet_desktop_free(desktop);
if (bx) evas_object_del(bx); if (bx) evas_object_del(bx);
bx = NULL; bx = NULL;
@ -1049,6 +1045,7 @@ _apps_populate(void)
e_scrollframe_child_viewport_size_get(sf, &sfw, &sfh); e_scrollframe_child_viewport_size_get(sf, &sfw, &sfh);
{ {
// TODO: Needs some efreet love
Efreet_Menu *menu, *entry, *subentry; Efreet_Menu *menu, *entry, *subentry;
char *label, *icon, *plabel; char *label, *icon, *plabel;
Eina_List *settings_desktops, *system_desktops, *keyboard_desktops; Eina_List *settings_desktops, *system_desktops, *keyboard_desktops;
@ -1199,27 +1196,26 @@ _cb_selected(void *data, Evas_Object *obj, void *event_info)
Efreet_Desktop *desktop; Efreet_Desktop *desktop;
desktop = efreet_desktop_get(ici->real_link); desktop = efreet_desktop_get(ici->real_link);
if (desktop) _desktop_run(desktop); if (desktop)
{
_desktop_run(desktop);
efreet_desktop_free(desktop);
}
} }
} }
#if 0
static int static int
_cb_efreet_desktop_list_change(void *data, int type, void *event) _cb_efreet_cache_update(void *data, int type, void *event)
{ {
if (defer) ecore_timer_del(defer); Efreet_Desktop *desktop;
defer = ecore_timer_add(1.0, _cb_update_deferred, NULL);
return 1; EINA_LIST_FREE(desks, desktop)
} efreet_desktop_free(desktop);
static int
_cb_efreet_desktop_change(void *data, int type, void *event)
{
if (defer) ecore_timer_del(defer); if (defer) ecore_timer_del(defer);
defer = ecore_timer_add(1.0, _cb_update_deferred, NULL); defer = ecore_timer_add(1.0, _cb_update_deferred, NULL);
return 1; return 1;
} }
#endif
static int static int
_cb_update_deferred(void *data) _cb_update_deferred(void *data)

View File

@ -120,8 +120,6 @@ _app_write(App *a)
a->name, a->generic, a->comment, a->exec, a->icon); a->name, a->generic, a->comment, a->exec, a->icon);
if (a->extra) fprintf(f, "%s\n", a->extra); if (a->extra) fprintf(f, "%s\n", a->extra);
fclose(f); fclose(f);
/* TODO: This will leak */
efreet_desktop_get(buf);
} }
EAPI int EAPI int
@ -138,7 +136,11 @@ wizard_page_init(E_Wizard_Page *pg)
{ {
char dbuf[4096]; char dbuf[4096];
if (!desk->exec) continue; if (!desk->exec)
{
efreet_desktop_free(desk);
continue;
}
if (sscanf(desk->exec, "%4000s", dbuf) == 1) if (sscanf(desk->exec, "%4000s", dbuf) == 1)
{ {
for (i = 0; i < (sizeof(apps) / sizeof(App)); i++) for (i = 0; i < (sizeof(apps) / sizeof(App)); i++)
@ -172,6 +174,7 @@ wizard_page_init(E_Wizard_Page *pg)
} }
} }
} }
efreet_desktop_free(desk);
} }
efreet_util_shutdown(); efreet_util_shutdown();

View File

@ -29,8 +29,11 @@ wizard_page_init(E_Wizard_Page *pg)
desks = eina_list_sort(desks, 0, (Eina_Compare_Cb)_cb_sort_desks); desks = eina_list_sort(desks, 0, (Eina_Compare_Cb)_cb_sort_desks);
EINA_LIST_FREE(desks, desk) EINA_LIST_FREE(desks, desk)
{ {
if (!desk->exec) continue; if (!desk->exec)
efreet_desktop_ref(desk); {
efreet_desktop_free(desk);
continue;
}
desktops = eina_list_append(desktops, desk); desktops = eina_list_append(desktops, desk);
} }
efreet_util_shutdown(); efreet_util_shutdown();