diff --git a/src/bin/e_configure.c b/src/bin/e_configure.c index 4df29c44b..f2b9d0caf 100644 --- a/src/bin/e_configure.c +++ b/src/bin/e_configure.c @@ -41,7 +41,7 @@ e_configure_init(void) handlers = eina_list_append (handlers, ecore_event_handler_add (EFREET_EVENT_CACHE_UPDATE, _e_configure_cb_efreet_desktop_cache_update, NULL)); - _e_configure_efreet_desktop_update(); + //_e_configure_efreet_desktop_update(); } static void diff --git a/src/bin/e_order.c b/src/bin/e_order.c index 52316d1da..749c0aed7 100644 --- a/src/bin/e_order.c +++ b/src/bin/e_order.c @@ -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_save (E_Order *eo); -#if 0 -static int _e_order_cb_efreet_desktop_change(void *data, int ev_type, void *ev); -#endif +static int _e_order_cb_efreet_cache_update(void *data, int ev_type, void *ev); static Eina_List *orders = NULL; static Eina_List *handlers = NULL; @@ -20,9 +18,7 @@ static Eina_List *handlers = NULL; EAPI int e_order_init(void) { -#if 0 - handlers = eina_list_append(handlers, ecore_event_handler_add(EFREET_EVENT_DESKTOP_CHANGE, _e_order_cb_efreet_desktop_change, NULL)); -#endif + handlers = eina_list_append(handlers, ecore_event_handler_add(EFREET_EVENT_CACHE_UPDATE, _e_order_cb_efreet_cache_update, NULL)); efreet_menu_file_set(e_config->default_system_menu); return 1; } @@ -263,67 +259,17 @@ _e_order_save(E_Order *eo) fclose(f); } -#if 0 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; E_Order *eo; - event = ev; - switch (event->change) + /* reread all .order files */ + EINA_LIST_FOREACH(orders, l, eo) { - case EFREET_DESKTOP_CHANGE_ADD: - /* If a desktop is added, reread all .order files */ - 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; + _e_order_read(eo); + if (eo->cb.update) eo->cb.update(eo->cb.data, eo); } return 1; } -#endif diff --git a/src/modules/conf_applications/e_int_config_apps.c b/src/modules/conf_applications/e_int_config_apps.c index 4909d6080..01cdc0af1 100644 --- a/src/modules/conf_applications/e_int_config_apps.c +++ b/src/modules/conf_applications/e_int_config_apps.c @@ -304,8 +304,6 @@ _load_order(const char *path) efreet_desktop_ref(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)); return apps; } @@ -327,11 +325,9 @@ _fill_apps(E_Config_Dialog_Data *cfdata) EINA_LIST_FREE(desks, desk) { if (!eina_list_search_unsorted(l, _cb_sort_desks, desk)) - { - efreet_desktop_ref(desk); - l = eina_list_append(l, desk); - } - efreet_desktop_free(desk); + l = eina_list_append(l, desk); + else + efreet_desktop_free(desk); } 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); e_widget_ilist_append(cfdata->o_sel, icon, desk->name, _sel_list_cb_selected, cfdata, desk->orig_path); + efreet_desktop_free(desk); } e_widget_ilist_go(cfdata->o_sel); @@ -564,6 +561,7 @@ _cb_up(void *data, void *data2) _sel_list_cb_selected, cfdata, desk->orig_path, (sel - 1)); e_widget_ilist_selected_set(cfdata->o_sel, (sel - 1)); + efreet_desktop_free(desk); } } e_widget_ilist_go(cfdata->o_sel); @@ -604,6 +602,7 @@ _cb_down(void *data, void *data2) _sel_list_cb_selected, cfdata, desk->orig_path, sel); e_widget_ilist_selected_set(cfdata->o_sel, (sel + 1)); + efreet_desktop_free(desk); } } 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); if (!desk) continue; efreet_menu_desktop_insert(menu, desk, -1); + efreet_desktop_free(desk); } ret = efreet_menu_save(menu, cfdata->data->filename); efreet_menu_free(menu); @@ -660,6 +660,7 @@ _save_order(E_Config_Dialog_Data *cfdata) desk = efreet_util_desktop_name_find(lbl); if (!desk) continue; e_order_append(order, desk); + efreet_desktop_free(desk); } e_object_del(E_OBJECT(order)); return 1; diff --git a/src/modules/conf_imc/e_int_config_imc.c b/src/modules/conf_imc/e_int_config_imc.c index 81279d141..2dea701ec 100644 --- a/src/modules/conf_imc/e_int_config_imc.c +++ b/src/modules/conf_imc/e_int_config_imc.c @@ -343,7 +343,10 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf Efreet_Desktop *desktop; desktop = efreet_util_desktop_exec_find(imc->e_im_setup_exec); 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); diff --git a/src/modules/exebuf/e_exebuf.c b/src/modules/exebuf/e_exebuf.c index 41bfb22bd..cdf80d045 100644 --- a/src/modules/exebuf/e_exebuf.c +++ b/src/modules/exebuf/e_exebuf.c @@ -359,6 +359,7 @@ _e_exebuf_exe_free(E_Exebuf_Exe *exe) evas_object_del(exe->bg_object); if (exe->icon_object) evas_object_del(exe->icon_object); + if (exe->desktop) efreet_desktop_free(exe->desktop); free(exe); } @@ -370,7 +371,7 @@ _e_exebuf_matches_clear(void) char *file; EINA_LIST_FREE(eap_matches, desktop) - e_object_unref(E_OBJECT(desktop)); + efreet_desktop_free(desktop); EINA_LIST_FREE(exe_matches, file) free(file); @@ -418,6 +419,7 @@ _e_exebuf_update(void) icon_object = o; edje_object_part_swallow(bg_object, "e.swallow.icons", 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); 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); @@ -1054,8 +1060,12 @@ _e_exebuf_matches_update(void) added = eina_hash_string_superfast_new(NULL); eina_hash_add(added, exe, desktop); } + else + efreet_desktop_free(desktop); free(exe); - } + } + else + efreet_desktop_free(desktop); } snprintf(buf, sizeof(buf), "*%s*", cmd_buf); @@ -1073,8 +1083,12 @@ _e_exebuf_matches_update(void) added = eina_hash_string_superfast_new(NULL); eina_hash_add(added, exe, desktop); } + else + efreet_desktop_free(desktop); free(exe); } + else + efreet_desktop_free(desktop); } snprintf(buf, sizeof(buf), "*%s*", cmd_buf); @@ -1092,8 +1106,12 @@ _e_exebuf_matches_update(void) added = eina_hash_string_superfast_new(NULL); eina_hash_add(added, exe, desktop); } + else + efreet_desktop_free(desktop); free(exe); } + else + efreet_desktop_free(desktop); } if (added) eina_hash_free(added); @@ -1246,7 +1264,7 @@ _e_exebuf_hist_update(Eina_List *hist_matches) Evas_Coord mw, mh; Evas_Object *o; Efreet_Desktop *desktop; - int found = 0; + Efreet_Desktop *found = NULL; int len; char *tmp; char match[4096]; @@ -1274,15 +1292,14 @@ _e_exebuf_hist_update(Eina_List *hist_matches) EINA_LIST_FREE(ll, desktop) { if (desktop->exec && !strncmp(file, desktop->exec, len)) - { - found = 1; - break; - } + found = desktop; + else + efreet_desktop_free(desktop); } if (found) { - exe->desktop = desktop; + exe->desktop = found; edje_object_part_text_set(o, "e.text.title", desktop->name); if (edje_object_part_exists(exe->bg_object, "e.swallow.icons")) diff --git a/src/modules/fileman/e_fwin.c b/src/modules/fileman/e_fwin.c index b804914d6..b9f732784 100644 --- a/src/modules/fileman/e_fwin.c +++ b/src/modules/fileman/e_fwin.c @@ -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)); /* 4. create a new list without duplicates */ - EINA_LIST_FOREACH(apps, l, desk) - if (!eina_list_data_find(ret, desk)) - ret = eina_list_append(ret, desk); - - if (apps) apps = eina_list_free(apps); + EINA_LIST_FREE(apps, desk) + { + if (!eina_list_data_find(ret, desk)) + ret = eina_list_append(ret, desk); + else + efreet_desktop_free(desk); + } if (mime_list) *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); if ((desktop) && (desktop->exec)) e_widget_entry_text_set(fad->o_entry, desktop->exec); + if (desktop) + efreet_desktop_free(desktop); } 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); // Adding Specific Applications list into widget - if(apps) + if (apps) e_widget_ilist_header_append(o, NULL, _("Specific Applications")); 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 = eina_list_sort(cats, 0, _e_fwin_dlg_cb_desk_sort); EINA_LIST_FREE(cats, desk) + { if (!eina_list_data_find(l, desk) && !eina_list_data_find(apps, 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); // Adding All Applications list into widget - if(l) + if (l) e_widget_ilist_header_append(o, NULL, _("All Applications")); 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); e_widget_ilist_append(o, icon, desk->name, NULL, NULL, 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_thaw(o); @@ -1943,14 +1953,17 @@ _e_fwin_cb_exec_cmd_changed(void *data, void *data2) if (!(fad = data)) return; - if (fad->app2) + if (fad->app2) desktop = efreet_util_desktop_file_id_find(fad->app2); if (!desktop) return; - if (!strcmp(desktop->exec, fad->exec_cmd)) return; - - eina_stringshare_del(fad->app2); - if (fad->o_all) e_widget_ilist_unselect(fad->o_all); + if (strcmp(desktop->exec, fad->exec_cmd)) + { + eina_stringshare_del(fad->app2); + 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) 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. if (!desktop) @@ -1985,9 +2002,7 @@ _e_fwin_cb_open(void *data, E_Dialog *dia) if ((desktop) || (strcmp(fad->exec_cmd, ""))) _e_fwin_desktop_run(desktop, fad->fwin->cur_page, EINA_FALSE); - // Free fake .desktop - if (!strcmp(fad->exec_cmd, "")) - efreet_desktop_free(desktop); + efreet_desktop_free(desktop); e_object_del(E_OBJECT(fad->dia)); } diff --git a/src/modules/illume-home/e_mod_main.c b/src/modules/illume-home/e_mod_main.c index 7756e59c9..41dbea146 100644 --- a/src/modules/illume-home/e_mod_main.c +++ b/src/modules/illume-home/e_mod_main.c @@ -61,10 +61,7 @@ static void _il_home_apps_populate(void); static void _il_home_apps_unpopulate(void); static void _il_home_fmc_set(Evas_Object *obj); static void _il_home_desks_populate(void); -#if 0 -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_desktop_cache_update(void *data, int type, void *event); static int _il_home_update_deferred(void *data); 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); @@ -100,18 +97,11 @@ e_modapi_init(E_Module *m) _il_home_apps_unpopulate(); _il_home_apps_populate(); -#if 0 handlers = eina_list_append(handlers, - ecore_event_handler_add(EFREET_EVENT_DESKTOP_LIST_CHANGE, - _il_home_desktop_list_change, + ecore_event_handler_add(EFREET_EVENT_CACHE_UPDATE, + _il_home_desktop_cache_update, NULL)); - handlers = - eina_list_append(handlers, - ecore_event_handler_add(EFREET_EVENT_DESKTOP_CHANGE, - _il_home_desktop_change, NULL)); -#endif - handlers = eina_list_append(handlers, ecore_event_handler_add(E_EVENT_BORDER_ADD, @@ -150,7 +140,8 @@ e_modapi_shutdown(E_Module *m) exe->handle = NULL; } 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(); @@ -659,31 +650,22 @@ _il_home_desks_populate(void) num++; } } + efreet_menu_free(menu); } } -#if 0 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); defer = ecore_timer_add(1.0, _il_home_update_deferred, NULL); 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 _il_home_update_deferred(void *data) { - _il_home_apps_unpopulate(); _il_home_apps_populate(); defer = NULL; 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); if (exe->timeout) ecore_timer_del(exe->timeout); + if (exe->desktop) efreet_desktop_free(exe->desktop); E_FREE(exe); return 1; } @@ -787,7 +770,8 @@ _il_home_win_cb_timeout(void *data) if (!exe->border) { exes = eina_list_remove(exes, exe); - E_FREE(exe); + if (exe->desktop) efreet_desktop_free(exe->desktop); + E_FREE(exe); return 0; } exe->timeout = NULL; diff --git a/src/modules/illume-keyboard/e_mod_config.c b/src/modules/illume-keyboard/e_mod_config.c index 19f06f112..dfa43fa23 100644 --- a/src/modules/illume-keyboard/e_mod_config.c +++ b/src/modules/illume-keyboard/e_mod_config.c @@ -164,6 +164,8 @@ _il_kbd_config_ui(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata } 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; 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); e_widget_framelist_object_append(of, ow); evas_object_smart_callback_add(ow, "changed", _il_kbd_config_changed, NULL); + efreet_desktop_free(desktop); nn++; - } + } } e_widget_list_object_append(list, of, 1, 0, 0.0); return list; @@ -239,6 +242,8 @@ _il_kbd_config_change_timeout(void *data) } nn++; } + EINA_LIST_FREE(kbds, desktop) + efreet_desktop_free(desktop); } } diff --git a/src/modules/illume-keyboard/e_mod_main.c b/src/modules/illume-keyboard/e_mod_main.c index f3ea782b3..368ed7c74 100644 --- a/src/modules/illume-keyboard/e_mod_main.c +++ b/src/modules/illume-keyboard/e_mod_main.c @@ -71,12 +71,13 @@ _il_kbd_start(void) desktop = efreet_util_desktop_file_id_find(il_kbd_cfg->run_keyboard); if (!desktop) { + Efreet_Desktop *d; Eina_List *kbds, *l; kbds = efreet_util_desktop_category_list("Keyboard"); if (kbds) { - EINA_LIST_FOREACH(kbds, l, desktop) + EINA_LIST_FOREACH(kbds, l, d) { const char *dname; @@ -84,9 +85,15 @@ _il_kbd_start(void) if (dname) { 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) @@ -102,6 +109,7 @@ _il_kbd_start(void) ecore_event_handler_add(ECORE_EXE_EVENT_DEL, _il_kbd_cb_exit, NULL); } + efreet_desktop_free(desktop); } } } diff --git a/src/modules/illume/e_cfg.c b/src/modules/illume/e_cfg.c index 485171b8a..532995bc4 100644 --- a/src/modules/illume/e_cfg.c +++ b/src/modules/illume/e_cfg.c @@ -1013,7 +1013,7 @@ static int _e_cfg_keyboard_change_timeout(void *data) if (kbds) { nn = 2; - EINA_LIST_FOREACH(kbds, l, desktop) + EINA_LIST_FREE(kbds, desktop) { 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); break; } + efreet_desktop_free(desktop); nn++; } } } e_mod_win_cfg_kbd_update(); e_config_save_queue(); - _e_cfg_keyboard_change_timer = NULL; return 0; + _e_cfg_keyboard_change_timer = NULL; + return 0; } static void _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) { nn = 2; - EINA_LIST_FOREACH(kbds, l, desktop) + EINA_LIST_FREE(kbds, desktop) { const char *dname; @@ -1091,6 +1093,7 @@ _e_cfg_keyboard_ui(E_Config_Dialog *cfd, Evas *e, E_Config_Dialog_Data *cfdata) break; } } + efreet_desktop_free(desktop); nn++; } } @@ -1110,11 +1113,12 @@ _e_cfg_keyboard_ui(E_Config_Dialog *cfd, Evas *e, E_Config_Dialog_Data *cfdata) int nn = 2; 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); e_widget_framelist_object_append(frame, o); evas_object_smart_callback_add(o, "changed", _e_cfg_keyboard_change, NULL); + efreet_desktop_free(desktop); nn++; } } diff --git a/src/modules/illume/e_flaunch.c b/src/modules/illume/e_flaunch.c index bae050fda..6f017f7f9 100644 --- a/src/modules/illume/e_flaunch.c +++ b/src/modules/illume/e_flaunch.c @@ -59,6 +59,7 @@ _e_fluanch_cb_app_button(void *data) desktop = efreet_util_desktop_file_id_find(fla->desktop); if (!desktop) return; if (fla->flaunch->desktop_run_func) fla->flaunch->desktop_run_func(desktop); + efreet_desktop_free(desktop); } 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_options_set(fla->obj, 1, 1, 1, 1, 0.5, 0.5, 0, 0, 9999, 9999); evas_object_show(fla->obj); + if (desktop) efreet_desktop_free(desktop); return fla; } @@ -132,6 +134,8 @@ _e_flaunch_apps_populate(E_Flaunch *fl) } if (num >= max) break; } + EINA_LIST_FREE(bar_desktops, desktop) + efreet_desktop_free(desktop); } while (num < max) { @@ -190,9 +194,8 @@ _e_flaunch_cb_delayed_repopulate(void *data) return 0; } -#if 0 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; @@ -202,18 +205,6 @@ _e_flaunch_cb_desktop_list_change(void *data, int type, void *event) 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 e_flaunch_init(void) { @@ -271,14 +262,9 @@ e_flaunch_new(E_Zone *zone, const char *themedir) fl->handlers = eina_list_append (fl->handlers, ecore_event_handler_add (E_EVENT_ZONE_MOVE_RESIZE, _e_flaunch_cb_zone_move_resize, fl)); -#if 0 fl->handlers = eina_list_append (fl->handlers, ecore_event_handler_add - (EFREET_EVENT_DESKTOP_LIST_CHANGE, _e_flaunch_cb_desktop_list_change, fl)); - fl->handlers = eina_list_append - (fl->handlers, ecore_event_handler_add - (EFREET_EVENT_DESKTOP_CHANGE, _e_flaunch_cb_desktop_change, fl)); -#endif + (EFREET_EVENT_CACHE_UPDATE, _e_flaunch_cb_cache_update, fl)); return fl; } diff --git a/src/modules/illume/e_mod_win.c b/src/modules/illume/e_mod_win.c index 8e34dae8a..527705e55 100644 --- a/src/modules/illume/e_mod_win.c +++ b/src/modules/illume/e_mod_win.c @@ -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_home2(void *data, E_Slipshelf *ess, E_Border *pbd); static void _cb_selected(void *data, Evas_Object *obj, void *event_info); -#if 0 -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 int _cb_efreet_cache_update(void *data, int type, void *event); static void _apps_unpopulate(void); static void _apps_populate(void); static int _cb_update_deferred(void *data); @@ -159,14 +156,9 @@ _e_mod_win_init(E_Module *m) handlers = eina_list_append (handlers, ecore_event_handler_add (ECORE_EXE_EVENT_DEL, _cb_event_exe_del, NULL)); -#if 0 handlers = eina_list_append (handlers, ecore_event_handler_add - (EFREET_EVENT_DESKTOP_LIST_CHANGE, _cb_efreet_desktop_list_change, NULL)); - handlers = eina_list_append - (handlers, ecore_event_handler_add - (EFREET_EVENT_DESKTOP_CHANGE, _cb_efreet_desktop_change, NULL)); -#endif + (EFREET_EVENT_CACHE_UPDATE, _cb_efreet_cache_update, NULL)); handlers = eina_list_append (handlers, ecore_event_handler_add (E_EVENT_ZONE_MOVE_RESIZE, _cb_zone_move_resize, NULL)); @@ -269,11 +261,12 @@ e_mod_win_cfg_kbd_start(void) if (!desktop) { Eina_List *kbds; + Efreet_Desktop *d; kbds = efreet_util_desktop_category_list("Keyboard"); if (kbds) { - EINA_LIST_FOREACH(kbds, l, desktop) + EINA_LIST_FREE(kbds, d) { const char *dname; @@ -281,8 +274,12 @@ e_mod_win_cfg_kbd_start(void) if (dname) { 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_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)); if (!ins) return; eins = e_exec(zone, desktop, NULL, NULL, "illume-launcher"); + efreet_desktop_ref(desktop); ins->desktop = desktop; if (eins) { @@ -945,7 +944,7 @@ static void _apps_unpopulate(void) { char buf[PATH_MAX]; - Efreet_Desktop *desktop; + Efreet_Desktop *desktop; Evas_Object *obj; Eina_List *files; char *file; @@ -954,9 +953,6 @@ _apps_unpopulate(void) EINA_LIST_FREE(sels, obj) evas_object_del(obj); - EINA_LIST_FREE(desks, desktop) - efreet_desktop_free(desktop); - if (bx) evas_object_del(bx); bx = NULL; @@ -1049,6 +1045,7 @@ _apps_populate(void) e_scrollframe_child_viewport_size_get(sf, &sfw, &sfh); { + // TODO: Needs some efreet love Efreet_Menu *menu, *entry, *subentry; char *label, *icon, *plabel; 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; 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 -_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); - defer = ecore_timer_add(1.0, _cb_update_deferred, NULL); - return 1; -} + Efreet_Desktop *desktop; + + 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); defer = ecore_timer_add(1.0, _cb_update_deferred, NULL); return 1; } -#endif static int _cb_update_deferred(void *data) diff --git a/src/modules/wizard/page_070.c b/src/modules/wizard/page_070.c index 4c8283ca7..3c0fc4ff8 100644 --- a/src/modules/wizard/page_070.c +++ b/src/modules/wizard/page_070.c @@ -120,8 +120,6 @@ _app_write(App *a) a->name, a->generic, a->comment, a->exec, a->icon); if (a->extra) fprintf(f, "%s\n", a->extra); fclose(f); - /* TODO: This will leak */ - efreet_desktop_get(buf); } EAPI int @@ -138,7 +136,11 @@ wizard_page_init(E_Wizard_Page *pg) { char dbuf[4096]; - if (!desk->exec) continue; + if (!desk->exec) + { + efreet_desktop_free(desk); + continue; + } if (sscanf(desk->exec, "%4000s", dbuf) == 1) { 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(); diff --git a/src/modules/wizard/page_080.c b/src/modules/wizard/page_080.c index 96b0a1fd6..da35c4267 100644 --- a/src/modules/wizard/page_080.c +++ b/src/modules/wizard/page_080.c @@ -29,8 +29,11 @@ wizard_page_init(E_Wizard_Page *pg) desks = eina_list_sort(desks, 0, (Eina_Compare_Cb)_cb_sort_desks); EINA_LIST_FREE(desks, desk) { - if (!desk->exec) continue; - efreet_desktop_ref(desk); + if (!desk->exec) + { + efreet_desktop_free(desk); + continue; + } desktops = eina_list_append(desktops, desk); } efreet_util_shutdown();