From: Enlightenment S. <no-...@en...> - 2008-12-17 16:14:17
|
Log: Create the hash anyway as we are about to add something to it. This will remove some warning about eina_hash_population on NULL hash. Author: cedric Date: 2008-12-17 08:14:10 -0800 (Wed, 17 Dec 2008) New Revision: 38187 Modified: trunk/e/src/bin/e_path.c Modified: trunk/e/src/bin/e_path.c =================================================================== --- trunk/e/src/bin/e_path.c 2008-12-17 16:10:07 UTC (rev 38186) +++ trunk/e/src/bin/e_path.c 2008-12-17 16:14:10 UTC (rev 38187) @@ -257,10 +257,10 @@ snprintf(buf, sizeof(buf), "%s/%s", epd->dir, file); if (ecore_file_exists(buf)) { + if (!ep->hash) + ep->hash = eina_hash_string_superfast_new(NULL); if (eina_hash_population(ep->hash) >= 512) _e_path_cache_free(ep); - if (!ep->hash) - ep->hash = eina_hash_string_superfast_new(NULL); eina_hash_add(ep->hash, file, eina_stringshare_add(buf)); return eina_stringshare_add(buf); @@ -278,10 +278,10 @@ snprintf(buf, sizeof(buf), "%s/%s", epd->dir, file); if (ecore_file_exists(buf)) { + if (!ep->hash) + ep->hash = eina_hash_string_superfast_new(NULL); if (eina_hash_population(ep->hash) >= 512) _e_path_cache_free(ep); - if (!ep->hash) - ep->hash = eina_hash_string_superfast_new(NULL); eina_hash_add(ep->hash, file, eina_stringshare_add(buf)); return eina_stringshare_add(buf); |
From: Enlightenment S. <no-...@en...> - 2008-12-17 16:17:13
|
Log: Remove __UNUSED__ as it doesn't make sense here. Author: cedric Date: 2008-12-17 08:17:08 -0800 (Wed, 17 Dec 2008) New Revision: 38188 Modified: trunk/e/src/bin/e_int_config_modules.h Modified: trunk/e/src/bin/e_int_config_modules.h =================================================================== --- trunk/e/src/bin/e_int_config_modules.h 2008-12-17 16:14:10 UTC (rev 38187) +++ trunk/e/src/bin/e_int_config_modules.h 2008-12-17 16:17:08 UTC (rev 38188) @@ -6,7 +6,7 @@ #ifndef E_INT_CONFIG_MODULES_H #define E_INT_CONFIG_MODULES_H -EAPI E_Config_Dialog *e_int_config_modules(E_Container *con, const char *params __UNUSED__); +EAPI E_Config_Dialog *e_int_config_modules(E_Container *con, const char *params); #endif #endif |
From: Enlightenment S. <no-...@en...> - 2008-12-17 16:36:16
|
Log: Calling e_object_del will make an attempt to remove object from actions hash. So do it later. Author: cedric Date: 2008-12-17 08:36:12 -0800 (Wed, 17 Dec 2008) New Revision: 38189 Modified: trunk/e/src/bin/e_actions.c Modified: trunk/e/src/bin/e_actions.c =================================================================== --- trunk/e/src/bin/e_actions.c 2008-12-17 16:17:08 UTC (rev 38188) +++ trunk/e/src/bin/e_actions.c 2008-12-17 16:36:12 UTC (rev 38189) @@ -2655,11 +2655,13 @@ e_actions_shutdown(void) { e_action_predef_name_all_del(); + + E_FREE_LIST(action_list, e_object_del); + action_names = eina_list_free(action_names); eina_hash_free(actions); actions = NULL; - E_FREE_LIST(action_list, e_object_del); return 1; } |
From: Enlightenment S. <no-...@en...> - 2008-12-29 12:40:52
|
Log: Remove warning generated when requesting data from hash without key. Author: cedric Date: 2008-12-29 04:40:49 -0800 (Mon, 29 Dec 2008) New Revision: 38347 Modified: trunk/e/src/bin/e_menu.c Modified: trunk/e/src/bin/e_menu.c =================================================================== --- trunk/e/src/bin/e_menu.c 2008-12-29 11:49:35 UTC (rev 38346) +++ trunk/e/src/bin/e_menu.c 2008-12-29 12:40:49 UTC (rev 38347) @@ -1021,10 +1021,10 @@ _e_menu_free(E_Menu *m) { Eina_List *l, *tmp; - E_Menu_Category *cat; + E_Menu_Category *cat = NULL; /* the foreign menu items */ - cat = eina_hash_find(_e_menu_categories, m->category); + if (m->category) cat = eina_hash_find(_e_menu_categories, m->category); if (cat) { for (l = cat->callbacks; l; l = l->next) @@ -1719,8 +1719,8 @@ static void _e_menu_activate_internal(E_Menu *m, E_Zone *zone) { + E_Menu_Category *cat = NULL; Eina_List *l; - E_Menu_Category *cat; if (m->pre_activate_cb.func) m->pre_activate_cb.func(m->pre_activate_cb.data, m); @@ -1761,15 +1761,18 @@ e_object_ref(E_OBJECT(m)); } /* the foreign menu items */ - cat = evas_hash_find(_e_menu_categories, m->category); - if (cat) + if (m->category) { - for (l = cat->callbacks; l; l = l->next) + cat = evas_hash_find(_e_menu_categories, m->category); + if (cat) { - E_Menu_Category_Callback *cb; + for (l = cat->callbacks; l; l = l->next) + { + E_Menu_Category_Callback *cb; - cb = l->data; - if (cb->create) cb->create(m, cat->data, cb->data); + cb = l->data; + if (cb->create) cb->create(m, cat->data, cb->data); + } } } m->cur.visible = 1; |
From: Enlightenment S. <no-...@en...> - 2009-01-08 10:59:01
|
Log: Early init eina, should fix #114. Author: cedric Date: 2009-01-08 02:58:55 -0800 (Thu, 08 Jan 2009) New Revision: 38500 Modified: trunk/e/src/bin/e_main.c Modified: trunk/e/src/bin/e_main.c =================================================================== --- trunk/e/src/bin/e_main.c 2009-01-08 00:08:43 UTC (rev 38499) +++ trunk/e/src/bin/e_main.c 2009-01-08 10:58:55 UTC (rev 38500) @@ -253,6 +253,9 @@ e_util_env_set("PANTS", "ON"); e_util_env_set("DESKTOP", "Enlightenment-0.17.0"); + TS("eina init"); + eina_init(); + TS("intl init"); e_intl_init(); _e_main_shutdown_push(e_intl_shutdown); @@ -1069,7 +1072,9 @@ } e_prefix_shutdown(); - + + eina_shutdown(); + /* just return 0 to keep the compiler quiet */ return 0; } |
From: Enlightenment S. <no-...@en...> - 2009-03-10 16:14:32
|
Log: * e_configure.c: Fix indentation. Author: cedric Date: 2009-03-10 09:14:24 -0700 (Tue, 10 Mar 2009) New Revision: 39431 Modified: trunk/e/src/bin/e_configure.c Modified: trunk/e/src/bin/e_configure.c =================================================================== --- trunk/e/src/bin/e_configure.c 2009-03-10 15:58:27 UTC (rev 39430) +++ trunk/e/src/bin/e_configure.c 2009-03-10 16:14:24 UTC (rev 39431) @@ -237,33 +237,33 @@ Eina_List *l; const char *item; char *cat; - + /* path is "category/item" */ cat = ecore_file_dir_get(path); if (!cat) return; item = ecore_file_file_get(path); - + EINA_LIST_FOREACH(e_configure_registry, l, ecat) - if (!strcmp(cat, ecat->cat)) - { - E_Configure_It *eci; + if (!strcmp(cat, ecat->cat)) + { + E_Configure_It *eci; Eina_List *ll; - + EINA_LIST_FOREACH(ecat->items, ll, eci) - if (!strcmp(item, eci->item)) - { - ecat->items = eina_list_remove_list(ecat->items, ll); + if (!strcmp(item, eci->item)) + { + ecat->items = eina_list_remove_list(ecat->items, ll); - eina_stringshare_del(eci->item); - eina_stringshare_del(eci->label); - eina_stringshare_del(eci->icon); - if (eci->icon_file) eina_stringshare_del(eci->icon_file); - if (eci->desktop) efreet_desktop_free(eci->desktop); - free(eci); + eina_stringshare_del(eci->item); + eina_stringshare_del(eci->label); + eina_stringshare_del(eci->icon); + if (eci->icon_file) eina_stringshare_del(eci->icon_file); + if (eci->desktop) efreet_desktop_free(eci->desktop); + free(eci); break; - } + } break; - } + } free(cat); } @@ -277,22 +277,22 @@ /* if it exists - ignore this */ EINA_LIST_FOREACH(e_configure_registry, l, ecat2) - if (!strcmp(ecat2->cat, path)) return; - + if (!strcmp(ecat2->cat, path)) return; + ecat = E_NEW(E_Configure_Cat, 1); if (!ecat) return; - + ecat->cat = eina_stringshare_add(path); ecat->pri = pri; ecat->label = eina_stringshare_add(label); if (icon_file) ecat->icon_file = eina_stringshare_add(icon_file); if (icon) ecat->icon = eina_stringshare_add(icon); EINA_LIST_FOREACH(e_configure_registry, l, ecat2) - if (ecat2->pri > ecat->pri) - { - e_configure_registry = eina_list_prepend_relative_list(e_configure_registry, ecat, l); - return; - } + if (ecat2->pri > ecat->pri) + { + e_configure_registry = eina_list_prepend_relative_list(e_configure_registry, ecat, l); + return; + } e_configure_registry = eina_list_append(e_configure_registry, ecat); } @@ -302,21 +302,21 @@ E_Configure_Cat *ecat; Eina_List *l; char *cat; - + cat = ecore_file_dir_get(path); if (!cat) return; EINA_LIST_FOREACH(e_configure_registry, l, ecat) - if (!strcmp(cat, ecat->cat)) - { + if (!strcmp(cat, ecat->cat)) + { if (ecat->items) break; - e_configure_registry = eina_list_remove_list(e_configure_registry, l); - eina_stringshare_del(ecat->cat); - eina_stringshare_del(ecat->label); - if (ecat->icon) eina_stringshare_del(ecat->icon); - if (ecat->icon_file) eina_stringshare_del(ecat->icon_file); - free(ecat); + e_configure_registry = eina_list_remove_list(e_configure_registry, l); + eina_stringshare_del(ecat->cat); + eina_stringshare_del(ecat->label); + if (ecat->icon) eina_stringshare_del(ecat->icon); + if (ecat->icon_file) eina_stringshare_del(ecat->icon_file); + free(ecat); break; - } + } free(cat); } @@ -333,37 +333,37 @@ Eina_List *l; char *cat; const char *item; - + /* path is "category/item" */ cat = ecore_file_dir_get(path); if (!cat) return; item = ecore_file_file_get(path); EINA_LIST_FOREACH(e_configure_registry, l, ecat) - if (!strcmp(cat, ecat->cat)) - { - E_Configure_It *eci; + if (!strcmp(cat, ecat->cat)) + { + E_Configure_It *eci; Eina_List *ll; - + EINA_LIST_FOREACH(ecat->items, ll, eci) - if (!strcmp(item, eci->item)) - { - if (eci->func) eci->func(con, params); - else if (eci->generic_func) eci->generic_func(con, params); - else if (eci->desktop) - { - if (custom_desktop_exec.func) - custom_desktop_exec.func(custom_desktop_exec.data, - con, - params, - eci->desktop); - else - e_exec(e_util_zone_current_get(con->manager), - eci->desktop, NULL, NULL, "config"); - } + if (!strcmp(item, eci->item)) + { + if (eci->func) eci->func(con, params); + else if (eci->generic_func) eci->generic_func(con, params); + else if (eci->desktop) + { + if (custom_desktop_exec.func) + custom_desktop_exec.func(custom_desktop_exec.data, + con, + params, + eci->desktop); + else + e_exec(e_util_zone_current_get(con->manager), + eci->desktop, NULL, NULL, "config"); + } break; - } + } break; - } + } free(cat); } @@ -384,30 +384,30 @@ char *cat; const char *item; int ret = 0; - + /* path is "category/item" */ cat = ecore_file_dir_get(path); if (!cat) return 0; item = ecore_file_file_get(path); EINA_LIST_FOREACH(e_configure_registry, l, ecat) - if (!strcmp(cat, ecat->cat)) - { + if (!strcmp(cat, ecat->cat)) + { E_Configure_It *eci; - Eina_List *ll; + Eina_List *ll; - if (!item) - { - ret = 1; + if (!item) + { + ret = 1; break; - } + } EINA_LIST_FOREACH(ecat->items, ll, eci) - if (!strcmp(item, eci->item)) - { - ret = 1; + if (!strcmp(item, eci->item)) + { + ret = 1; break; - } + } break; - } + } free(cat); return ret; |
From: Enlightenment S. <no-...@en...> - 2009-03-10 16:16:52
|
Log: * e_configure.c: White space removal and more indent. Author: cedric Date: 2009-03-10 09:16:42 -0700 (Tue, 10 Mar 2009) New Revision: 39432 Modified: trunk/e/src/bin/e_configure.c Modified: trunk/e/src/bin/e_configure.c =================================================================== --- trunk/e/src/bin/e_configure.c 2009-03-10 16:14:24 UTC (rev 39431) +++ trunk/e/src/bin/e_configure.c 2009-03-10 16:16:42 UTC (rev 39432) @@ -38,18 +38,18 @@ /* remove anything with a desktop entry */ EINA_LIST_FOREACH(e_configure_registry, l, ecat) - { - E_Configure_It *eci; + { + E_Configure_It *eci; Eina_List *ll; - + EINA_LIST_FOREACH(ecat->items, ll, eci) - if (eci->desktop) - { - snprintf(buf, sizeof(buf), "%s/%s", ecat->cat, eci->item); - remove_items = eina_list_append(remove_items, strdup(buf)); - remove_cats = eina_list_append(remove_cats, strdup(ecat->cat)); - } - } + if (eci->desktop) + { + snprintf(buf, sizeof(buf), "%s/%s", ecat->cat, eci->item); + remove_items = eina_list_append(remove_items, strdup(buf)); + remove_cats = eina_list_append(remove_cats, strdup(ecat->cat)); + } + } EINA_LIST_FREE(remove_items, data) { e_configure_registry_item_del(data); @@ -60,12 +60,12 @@ e_configure_registry_category_del(data); free(data); } - + /* get desktops */ settings_desktops = efreet_util_desktop_category_list("Settings"); system_desktops = efreet_util_desktop_category_list("System"); if ((!settings_desktops) || (!system_desktops)) return; - + /* get ones in BOTH lists */ EINA_LIST_FOREACH(settings_desktops, l, desktop) { @@ -77,7 +77,7 @@ char *cfg_icon; char *label; int cfg_pri; - + if (!eina_list_data_find(system_desktops, desktop)) continue; cfg_cat = NULL; cfg_icon = NULL; @@ -116,14 +116,14 @@ if (!cfg_cat_cfg) { char *ic; - + snprintf(buf, sizeof(buf), "system/%s", label); cfg_cat_cfg = buf; ic = cfg_cat_icon; if (!ic) ic = "enlightenment/system"; e_configure_registry_category_add("system", 1000, _("System"), - NULL, + NULL, ic); } else @@ -136,7 +136,7 @@ cfg_cat_name = cfg_cat; e_configure_registry_category_add(cfg_cat, 1000, cfg_cat_name, - NULL, + NULL, cfg_cat_icon); free(cfg_cat); cfg_cat = NULL; @@ -172,14 +172,14 @@ char *cat; const char *item; E_Configure_It *eci; - + /* path is "category/item" */ cat = ecore_file_dir_get(path); if (!cat) return; item = ecore_file_file_get(path); eci = E_NEW(E_Configure_It, 1); if (!eci) goto done; - + eci->item = eina_stringshare_add(item); eci->pri = pri; eci->label = eina_stringshare_add(label); @@ -189,20 +189,20 @@ eci->generic_func = generic_func; eci->desktop = desktop; if (eci->desktop) efreet_desktop_ref(eci->desktop); - + for (l = e_configure_registry; l; l = l->next) { E_Configure_Cat *ecat; - + ecat = l->data; if (!strcmp(cat, ecat->cat)) { Eina_List *ll; - + for (ll = ecat->items; ll; ll = ll->next) { E_Configure_It *eci2; - + eci2 = ll->data; if (eci2->pri > eci->pri) { @@ -214,7 +214,7 @@ goto done; } } - done: + done: free(cat); } |
From: Enlightenment S. <no-...@en...> - 2009-03-10 16:19:10
|
Log: * e_configure.c: Use EINA_LIST_FOREACH. Author: cedric Date: 2009-03-10 09:19:02 -0700 (Tue, 10 Mar 2009) New Revision: 39433 Modified: trunk/e/src/bin/e_configure.c Modified: trunk/e/src/bin/e_configure.c =================================================================== --- trunk/e/src/bin/e_configure.c 2009-03-10 16:16:42 UTC (rev 39432) +++ trunk/e/src/bin/e_configure.c 2009-03-10 16:19:02 UTC (rev 39433) @@ -172,6 +172,7 @@ char *cat; const char *item; E_Configure_It *eci; + E_Configure_Cat *ecat; /* path is "category/item" */ cat = ecore_file_dir_get(path); @@ -190,30 +191,22 @@ eci->desktop = desktop; if (eci->desktop) efreet_desktop_ref(eci->desktop); - for (l = e_configure_registry; l; l = l->next) - { - E_Configure_Cat *ecat; + EINA_LIST_FOREACH(e_configure_registry, l, ecat) + if (!strcmp(cat, ecat->cat)) + { + E_Configure_It *eci2; + Eina_List *ll; - ecat = l->data; - if (!strcmp(cat, ecat->cat)) - { - Eina_List *ll; + EINA_LIST_FOREACH(ecat->items, ll, eci2) + if (eci2->pri > eci->pri) + { + ecat->items = eina_list_prepend_relative_list(ecat->items, eci, ll); + goto done; + } + ecat->items = eina_list_append(ecat->items, eci); + goto done; + } - for (ll = ecat->items; ll; ll = ll->next) - { - E_Configure_It *eci2; - - eci2 = ll->data; - if (eci2->pri > eci->pri) - { - ecat->items = eina_list_prepend_relative_list(ecat->items, eci, ll); - goto done; - } - } - ecat->items = eina_list_append(ecat->items, eci); - goto done; - } - } done: free(cat); } |
From: Enlightenment S. <no-...@en...> - 2009-03-11 13:16:10
|
Log: * e_widget_ilist.c: Ok, this is a quick fix (disable queue for now). A better fix would be to propagate the delete operation to e_ilist.c and mark the selected entry to be deleted and update code listing selected item to not return to be deleted item. NOTE: Is it really usefull ? Doesn't evas/edje delay the destruction of Evas_Object anyway ? Author: cedric Date: 2009-03-11 06:16:01 -0700 (Wed, 11 Mar 2009) New Revision: 39445 Modified: trunk/e/src/bin/e_widget_ilist.c Modified: trunk/e/src/bin/e_widget_ilist.c =================================================================== --- trunk/e/src/bin/e_widget_ilist.c 2009-03-10 22:44:36 UTC (rev 39444) +++ trunk/e/src/bin/e_widget_ilist.c 2009-03-11 13:16:01 UTC (rev 39445) @@ -667,18 +667,21 @@ EAPI void e_widget_ilist_remove_num(Evas_Object *obj, int n) { - _queue_append(obj, 6, NULL, NULL, 0, NULL, NULL, NULL, 0, 0, n); -/* +/* _queue_append(obj, 6, NULL, NULL, 0, NULL, NULL, NULL, 0, 0, n); */ + E_Widget_Callback *wcb; E_Widget_Data *wd; - E_Widget_Callback *wcb; + Eina_List *item; wd = e_widget_data_get(obj); e_ilist_remove_num(wd->o_ilist, n); - if (!(wcb = eina_list_nth(wd->callbacks, n))) return; - if (wcb->value) free(wcb->value); - free(wcb); - wd->callbacks = eina_list_remove(wd->callbacks, wcb); - */ + item = eina_list_nth_list(wd->callbacks, n); + if (item) + { + wcb = eina_list_data_get(item); + if (wcb && wcb->value) free(wcb->value); + free(wcb); + wd->callbacks = eina_list_remove_list(wd->callbacks, item); + } } EAPI void |
From: Enlightenment S. <no-...@en...> - 2009-03-11 15:12:42
|
Log: * e_ilist.c: Reduce list walk. Author: cedric Date: 2009-03-11 08:12:33 -0700 (Wed, 11 Mar 2009) New Revision: 39446 Modified: trunk/e/src/bin/e_ilist.c Modified: trunk/e/src/bin/e_ilist.c =================================================================== --- trunk/e/src/bin/e_ilist.c 2009-03-11 13:16:01 UTC (rev 39445) +++ trunk/e/src/bin/e_ilist.c 2009-03-11 15:12:33 UTC (rev 39446) @@ -596,11 +596,16 @@ e_ilist_remove_num(Evas_Object *obj, int n) { E_Ilist_Item *si = NULL; + Eina_List *item; API_ENTRY return; if (!sd->items) return; - if (!(si = eina_list_nth(sd->items, n))) return; - sd->items = eina_list_remove(sd->items, si); + item = eina_list_nth_list(sd->items, n); + if (!item) return; + si = eina_list_data_get(item); + if (!si) return; + sd->items = eina_list_remove_list(sd->items, item); + if (sd->selected == n) sd->selected = -1; if (si->o_icon) evas_object_del(si->o_icon); evas_object_del(si->o_base); |
From: Enlightenment S. <no-...@en...> - 2009-03-18 16:49:24
|
Log: * e_theme: Cleanup and use sorted list for faster looking. Author: cedric Date: 2009-03-18 09:49:20 -0700 (Wed, 18 Mar 2009) New Revision: 39551 Modified: trunk/e/src/bin/e_theme.c Modified: trunk/e/src/bin/e_theme.c =================================================================== --- trunk/e/src/bin/e_theme.c 2009-03-18 15:00:52 UTC (rev 39550) +++ trunk/e/src/bin/e_theme.c 2009-03-18 16:49:20 UTC (rev 39551) @@ -35,6 +35,7 @@ EAPI int e_theme_init(void) { + E_Config_Theme *et; Eina_List *l = NULL; /* Register mime handler */ @@ -47,13 +48,11 @@ /* always fall back to the default theme. the rest after this are config */ /* values users can set */ e_theme_file_set("base", "default.edj"); - - for (l = e_config->themes; l; l = l->next) + + EINA_LIST_FOREACH(e_config->themes, l, et) { - E_Config_Theme *et; char buf[256]; - - et = l->data; + snprintf(buf, sizeof(buf), "base/%s", et->category); e_theme_file_set(buf, et->file); } @@ -72,6 +71,8 @@ EAPI int e_theme_shutdown(void) { + const char *str; + if (theme_hdl) { e_fm2_mime_handler_glob_del(theme_hdl, "*.edj"); @@ -88,26 +89,14 @@ eina_hash_free(group_cache); group_cache = NULL; } - while (categories) - { - eina_stringshare_del(categories->data); - categories = eina_list_remove_list(categories, categories); - } - while (transitions) - { - eina_stringshare_del(transitions->data); - transitions = eina_list_remove_list(transitions, transitions); - } - while (borders) - { - eina_stringshare_del(borders->data); - borders = eina_list_remove_list(borders, borders); - } - while (shelfs) - { - eina_stringshare_del(shelfs->data); - shelfs = eina_list_remove_list(shelfs, shelfs); - } + EINA_LIST_FREE(categories, str) + eina_stringshare_del(str); + EINA_LIST_FREE(transitions, str) + eina_stringshare_del(str); + EINA_LIST_FREE(borders, str) + eina_stringshare_del(str); + EINA_LIST_FREE(shelfs, str) + eina_stringshare_del(str); return 1; } @@ -216,12 +205,14 @@ /* if the group exists - return */ if (!res->quickfind) { + const char *col; + res->quickfind = eina_hash_string_superfast_new(NULL); /* great a quick find hash of all group entires */ coll = edje_file_collection_list(str); - for (l = coll; l; l = l->next) + EINA_LIST_FOREACH(coll, l, col) { - q = eina_stringshare_add(l->data); + q = eina_stringshare_add(col); eina_hash_direct_add(res->quickfind, q, q); } if (coll) edje_file_collection_list_free(coll); @@ -333,9 +324,8 @@ #endif /* search for the category */ - for (next = e_config->themes; next; next = next->next) + EINA_LIST_FOREACH(e_config->themes, next, ect) { - ect = eina_list_data_get(next); if (!strcmp(ect->category, category)) { if (ect->file) eina_stringshare_del(ect->file); @@ -363,9 +353,8 @@ Eina_List *next; /* search for the category */ - for (next = e_config->themes; next; next = next->next) + EINA_LIST_FOREACH(e_config->themes, next, ect) { - ect = eina_list_data_get(next); if (!strcmp(ect->category, category)) return ect; } @@ -377,11 +366,10 @@ { E_Config_Theme *ect; Eina_List *next; - + /* search for the category */ - for (next = e_config->themes; next; next = next->next) + EINA_LIST_FOREACH(e_config->themes, next, ect) { - ect = eina_list_data_get(next); if (!strcmp(ect->category, category)) { e_config->themes = eina_list_remove_list(e_config->themes, next); @@ -403,13 +391,8 @@ EAPI int e_theme_category_find(const char *category) { - Eina_List *l; - - for (l = categories; l; l = l->next) - { - if (!strcmp(category, l->data)) - return 1; - } + if (eina_list_search_sorted(categories, EINA_COMPARE_CB(strcmp), category)) + return 1; return 0; } @@ -422,13 +405,8 @@ EAPI int e_theme_transition_find(const char *transition) { - Eina_List *l; - - for (l = transitions; l; l = l->next) - { - if (!strcmp(transition, l->data)) - return 1; - } + if (eina_list_search_sorted(transitions, EINA_COMPARE_CB(strcmp), transition)) + return 1; return 0; } @@ -441,13 +419,8 @@ EAPI int e_theme_border_find(const char *border) { - Eina_List *l; - - for (l = borders; l; l = l->next) - { - if (!strcmp(border, l->data)) - return 1; - } + if (eina_list_search_sorted(borders, EINA_COMPARE_CB(strcmp), border)) + return 1; return 0; } @@ -460,13 +433,8 @@ EAPI int e_theme_shelf_find(const char *shelf) { - Eina_List *l; - - for (l = shelfs; l; l = l->next) - { - if (!strcmp(shelf, l->data)) - return 1; - } + if (eina_list_search_sorted(shelfs, EINA_COMPARE_CB(strcmp), shelf)) + return 1; return 0; } @@ -525,24 +493,34 @@ static void _e_theme_category_register(const char *category) { + const char *c; Eina_List *l; + int ret; - for (l = categories; l; l = l->next) - { - if (!strcmp(category, l->data)) return; - } + if (!categories) + categories = eina_list_append(categories, eina_stringshare_add(category)); - categories = eina_list_append(categories, eina_stringshare_add(category)); + l = eina_list_search_sorted_near_list(categories, EINA_COMPARE_CB(strcmp), category); + c = eina_list_data_get(l); + + ret = strcmp(c, category); + if (!ret) return; + + if (ret < 0) + categories = eina_list_append_relative_list(categories, eina_stringshare_add(category), l); + else + categories = eina_list_prepend_relative_list(categories, eina_stringshare_add(category), l); } static Eina_List * _e_theme_collection_item_register(Eina_List *list, const char *name) { + const char *item; Eina_List *l; - for (l = list; l; l = l->next) + EINA_LIST_FOREACH(list, l, item) { - if (!strcmp(name, l->data)) return list; + if (!strcmp(name, item)) return list; } list = eina_list_append(list, eina_stringshare_add(name)); return list; @@ -584,13 +562,15 @@ coll = edje_file_collection_list(str); if (coll) { - for (l = coll; l; l = l->next) + const char *c; + + EINA_LIST_FOREACH(coll, l, c) { - if (!strncmp(l->data, collname, collname_len)) + if (!strncmp(c, collname, collname_len)) { char *trans; - - trans = strdup(l->data); + + trans = strdup(c); p = trans + collname_len + 1; if (*p) { @@ -609,5 +589,7 @@ if (p) *p = 0; } while (p); + + list = eina_list_sort(list, 0, EINA_COMPARE_CB(strcmp)); return list; } |
From: Enlightenment S. <no-...@en...> - 2009-03-19 19:03:38
|
Log: * e_actions: Use some eina macro. Author: cedric Date: 2009-03-19 12:03:35 -0700 (Thu, 19 Mar 2009) New Revision: 39591 Modified: trunk/e/src/bin/e_actions.c Modified: trunk/e/src/bin/e_actions.c =================================================================== --- trunk/e/src/bin/e_actions.c 2009-03-19 19:00:46 UTC (rev 39590) +++ trunk/e/src/bin/e_actions.c 2009-03-19 19:03:35 UTC (rev 39591) @@ -2899,11 +2899,10 @@ E_Action_Group *actg = NULL; E_Action_Description *actd = NULL; Eina_List *l, *l2; - - for (l = action_groups; l; l = l->next) + + EINA_LIST_FOREACH(action_groups, l, actg) { - actg = l->data; - for (l2 = actg->acts; l2; l2 = l2->next) + EINA_LIST_FOREACH(actg->acts, l2, actd) { actd = l2->data; if (!strcmp(actd->act_cmd, action)) @@ -2930,10 +2929,8 @@ if (!act_grp || !act_name) return; - for (l = action_groups; l; l = l->next) + EINA_LIST_FOREACH(action_groups, l, actg) { - actg = l->data; - if (!strcmp(actg->act_grp, act_grp)) break; actg = NULL; @@ -2953,9 +2950,8 @@ _action_groups_sort_cb); } - for (l = actg->acts; l; l = l->next) + EINA_LIST_FOREACH(actg->acts, l, actd) { - actd = l->data; if (!strcmp(actd->act_name, act_name)) break; actd = NULL; |
From: Enlightenment S. <no-...@en...> - 2009-03-31 16:05:16
|
Log: * e_box: Prevent the reuse of a free memory adress. Author: cedric Date: 2009-03-31 09:05:05 -0700 (Tue, 31 Mar 2009) New Revision: 39821 Modified: trunk/e/src/bin/e_box.c Modified: trunk/e/src/bin/e_box.c =================================================================== --- trunk/e/src/bin/e_box.c 2009-03-31 14:11:31 UTC (rev 39820) +++ trunk/e/src/bin/e_box.c 2009-03-31 16:05:05 UTC (rev 39821) @@ -704,6 +704,8 @@ e_box_thaw(obj); evas_object_del(sd->clip); free(sd); + + evas_object_smart_data_set(obj, NULL); } static void |
From: Enlightenment S. <no-...@en...> - 2009-06-30 11:53:29
|
Log: * e: Remove not correctly initialized warning. Author: cedric Date: 2009-06-30 02:27:03 -0700 (Tue, 30 Jun 2009) New Revision: 41225 Modified: trunk/e/src/bin/e_init_main.c Modified: trunk/e/src/bin/e_init_main.c =================================================================== --- trunk/e/src/bin/e_init_main.c 2009-06-29 14:38:03 UTC (rev 41224) +++ trunk/e/src/bin/e_init_main.c 2009-06-30 09:27:03 UTC (rev 41225) @@ -441,7 +441,7 @@ static Ecore_Evas * _e_init_evas_new(Ecore_X_Window root, int w, int h, Ecore_X_Window *winret) { - Ecore_Evas *ee; + Ecore_Evas *ee = NULL; Evas *e; Eina_List *l; const char *path; @@ -474,7 +474,12 @@ ecore_evas_software_x11_16_direct_resize_set(ee, 1); *winret = ecore_evas_software_x11_16_window_get(ee); } - + else + { + printf("The select engine is unknown or incorrectly set. Please specify a correct one.\n"); + exit(0); + } + e = ecore_evas_get(ee); evas_image_cache_set(e, 4096 * 1024); |
From: Enlightenment S. <no-...@en...> - 2009-08-21 15:09:04
|
Log: * e: Cleanup use of Eina data structure. Patch from Peter van de Werken <pwe...@a-...>. Author: cedric Date: 2009-08-21 08:08:49 -0700 (Fri, 21 Aug 2009) New Revision: 41916 Modified: trunk/e/src/bin/e.h trunk/e/src/bin/e_actions.c trunk/e/src/bin/e_bg.c trunk/e/src/bin/e_bindings.c trunk/e/src/bin/e_border.c trunk/e/src/bin/e_box.c trunk/e/src/bin/e_canvas.c trunk/e/src/bin/e_color_class.c trunk/e/src/bin/e_config.c trunk/e/src/bin/e_config_dialog.c trunk/e/src/bin/e_container.c trunk/e/src/bin/e_desk.c trunk/e/src/bin/e_desklock.c trunk/e/src/bin/e_dnd.c trunk/e/src/bin/e_exehist.c trunk/e/src/bin/e_flowlayout.c trunk/e/src/bin/e_fm.c trunk/e/src/bin/e_fm_custom.c trunk/e/src/bin/e_fm_hal.c trunk/e/src/bin/e_fm_main.c trunk/e/src/bin/e_fm_mime.c trunk/e/src/bin/e_fm_op.c trunk/e/src/bin/e_fm_prop.c trunk/e/src/bin/e_fm_shared.h trunk/e/src/bin/e_font.c trunk/e/src/bin/e_gadcon.c trunk/e/src/bin/e_hints.c trunk/e/src/bin/e_ilist.c trunk/e/src/bin/e_init.c trunk/e/src/bin/e_init_main.c trunk/e/src/bin/e_int_border_remember.c trunk/e/src/bin/e_int_config_modules.c trunk/e/src/bin/e_int_gadcon_config.c trunk/e/src/bin/e_int_menus.c trunk/e/src/bin/e_int_shelf_config.c trunk/e/src/bin/e_intl.c trunk/e/src/bin/e_ipc_codec.c trunk/e/src/bin/e_ipc_handlers.h trunk/e/src/bin/e_layout.c trunk/e/src/bin/e_main.c trunk/e/src/bin/e_manager.c trunk/e/src/bin/e_maximize.c trunk/e/src/bin/e_menu.c trunk/e/src/bin/e_module.c trunk/e/src/bin/e_msg.c trunk/e/src/bin/e_msgbus.c trunk/e/src/bin/e_object.c trunk/e/src/bin/e_order.c trunk/e/src/bin/e_path.c trunk/e/src/bin/e_place.c trunk/e/src/bin/e_pointer.c trunk/e/src/bin/e_popup.c trunk/e/src/bin/e_powersave.c trunk/e/src/bin/e_remember.c trunk/e/src/bin/e_resist.c trunk/e/src/bin/e_shelf.c trunk/e/src/bin/e_slidecore.c trunk/e/src/bin/e_sys.c trunk/e/src/bin/e_table.c trunk/e/src/bin/e_test.c trunk/e/src/bin/e_thumb.c trunk/e/src/bin/e_thumb_main.c trunk/e/src/bin/e_toolbar.c trunk/e/src/bin/e_utils.c trunk/e/src/bin/e_widget.c trunk/e/src/bin/e_widget_csel.c trunk/e/src/bin/e_widget_desk_preview.c trunk/e/src/bin/e_widget_fsel.c trunk/e/src/bin/e_widget_ilist.c trunk/e/src/bin/e_widget_radio.c trunk/e/src/bin/e_widget_toolbook.c trunk/e/src/bin/e_xinerama.c trunk/e/src/bin/e_zone.c Modified: trunk/e/src/bin/e.h =================================================================== --- trunk/e/src/bin/e.h 2009-08-21 14:05:23 UTC (rev 41915) +++ trunk/e/src/bin/e.h 2009-08-21 15:08:49 UTC (rev 41916) @@ -126,14 +126,12 @@ { \ if (list) \ { \ - Eina_List *tmp; \ - tmp = list; \ - list = NULL; \ - while (tmp) \ + void *data; \ + EINA_LIST_FREE(list, data) \ { \ - free(tmp->data); \ - tmp = eina_list_remove_list(tmp, tmp); \ + free(data); \ } \ + list = NULL; \ } \ } \ while (0) Modified: trunk/e/src/bin/e_actions.c =================================================================== --- trunk/e/src/bin/e_actions.c 2009-08-21 14:05:23 UTC (rev 41915) +++ trunk/e/src/bin/e_actions.c 2009-08-21 15:08:49 UTC (rev 41916) @@ -1286,12 +1286,9 @@ E_Container *con; \ E_Manager *man; \ \ - for (lm = e_manager_list(); lm; lm = lm->next) { \ - man = lm->data; \ - for (lc = man->containers; lc; lc = lc->next) { \ - con = lc->data; \ - for (lz = con->zones; lz; lz = lz->next) { \ - zone = lz->data; \ + EINA_LIST_FOREACH(e_manager_list(), lm, man) { \ + EINA_LIST_FOREACH(man->containers, lc, con) { \ + EINA_LIST_FOREACH(con->zones, lz, zone) { \ act; \ } \ } \ @@ -1441,26 +1438,20 @@ E_Manager *man; \ if ((con_num >= 0) && (zone_num < 0)) /* con=1 zone=all */ { \ con = e_util_container_number_get(con_num); \ - for (l = con->zones; l; l = l->next) { \ - zone = l->data; \ + EINA_LIST_FOREACH(con->zones, l, zone) { \ act; \ } } \ else if ((con_num < 0) && (zone_num >= 0)) /* con=all zone=1 */ { \ - for (l = e_manager_list(); l; l = l->next) { \ - man = l->data; \ - for (ll = man->containers; ll; ll = ll->next) { \ - con = ll->data; \ + EINA_LIST_FOREACH(e_manager_list(), l, man) { \ + EINA_LIST_FOREACH(man->containers, ll, con) { \ zone = e_container_zone_number_get(con, zone_num); \ if (zone) \ act; \ } } } \ else if ((con_num < 0) && (zone_num < 0)) /* con=all zone=all */ { \ - for (l = e_manager_list(); l; l = l->next) { \ - man = l->data; \ - for (ll = man->containers; ll; ll = ll->next) { \ - con = ll->data; \ - for (lll = con->zones; lll; lll = lll->next) { \ - zone = lll->data; \ + EINA_LIST_FOREACH(e_manager_list(), l, man) { \ + EINA_LIST_FOREACH(man->containers, ll, con) { \ + EINA_LIST_FOREACH(con->zones, lll, zone) { \ act; \ } } } } } \ else { \ @@ -2367,12 +2358,10 @@ _delayed_action_key_del(E_Object *obj, const char *params, Ecore_Event_Key *ev) { Eina_List *l; - - for (l = _delayed_actions; l; l = l->next) + Delayed_Action *da; + + EINA_LIST_FOREACH(_delayed_actions, l, da) { - Delayed_Action *da; - - da = l->data; if ((da->obj == obj) && (!da->mouse) && (!strcmp(da->keyname, ev->keyname))) { @@ -2406,12 +2395,10 @@ _delayed_action_mouse_del(E_Object *obj, const char *params, Ecore_Event_Mouse_Button *ev) { Eina_List *l; + Delayed_Action *da; - for (l = _delayed_actions; l; l = l->next) + EINA_LIST_FOREACH(_delayed_actions, l, da) { - Delayed_Action *da; - - da = l->data; if ((da->obj == obj) && (da->mouse) && (ev->buttons == da->button)) { @@ -2928,7 +2915,6 @@ { EINA_LIST_FOREACH(actg->acts, l2, actd) { - actd = l2->data; if (!strcmp(actd->act_cmd, action)) { if ((params) && (actd->act_params)) @@ -3002,9 +2988,8 @@ E_Action_Description *actd = NULL; Eina_List *l; - for (l = action_groups; l; l = l->next) + EINA_LIST_FOREACH(action_groups, l, actg) { - actg = l->data; if (!strcmp(actg->act_grp, act_grp)) break; actg = NULL; @@ -3012,9 +2997,8 @@ if (!actg) return; - for (l = actg->acts; l; l = l->next) + EINA_LIST_FOREACH(actg->acts, l, actd) { - actd = l->data; if (!strcmp(actd->act_name, act_name)) { actg->acts = eina_list_remove(actg->acts, actd); @@ -3043,27 +3027,19 @@ E_Action_Group *actg = NULL; E_Action_Description *actd = NULL; - while (action_groups) + EINA_LIST_FREE(action_groups, actg) { - actg = action_groups->data; - - while (actg->acts) + EINA_LIST_FREE(actg->acts, actd) { - actd = actg->acts->data; - if (actd->act_name) eina_stringshare_del(actd->act_name); if (actd->act_cmd) eina_stringshare_del(actd->act_cmd); if (actd->act_params) eina_stringshare_del(actd->act_params); if (actd->param_example) eina_stringshare_del(actd->param_example); E_FREE(actd); - - actg->acts = eina_list_remove_list(actg->acts, actg->acts); } if (actg->act_grp) eina_stringshare_del(actg->act_grp); E_FREE(actg); - - action_groups = eina_list_remove_list(action_groups, action_groups); } action_groups = NULL; } Modified: trunk/e/src/bin/e_bg.c =================================================================== --- trunk/e/src/bin/e_bg.c 2009-08-21 14:05:23 UTC (rev 41915) +++ trunk/e/src/bin/e_bg.c 2009-08-21 15:08:49 UTC (rev 41916) @@ -32,6 +32,7 @@ e_bg_init(void) { Eina_List *l = NULL; + E_Config_Desktop_Background *cfbg = NULL; /* Register mime handler */ bg_hdl = e_fm2_mime_handler_new(_("Set As Background"), @@ -44,11 +45,8 @@ if (e_config->desktop_default_background) e_filereg_register(e_config->desktop_default_background); - for (l = e_config->desktop_backgrounds; l; l = l->next) + EINA_LIST_FOREACH(e_config->desktop_backgrounds, l, cfbg) { - E_Config_Desktop_Background *cfbg; - - cfbg = l->data; if (!cfbg) continue; e_filereg_register(cfbg->file); } @@ -61,6 +59,7 @@ e_bg_shutdown(void) { Eina_List *l = NULL; + E_Config_Desktop_Background *cfbg = NULL; /* Deregister mime handler */ if (bg_hdl) @@ -73,11 +72,8 @@ if (e_config->desktop_default_background) e_filereg_deregister(e_config->desktop_default_background); - for (l = e_config->desktop_backgrounds; l; l = l->next) + EINA_LIST_FOREACH(e_config->desktop_backgrounds, l, cfbg) { - E_Config_Desktop_Background *cfbg; - - cfbg = l->data; if (!cfbg) continue; e_filereg_deregister(cfbg->file); } @@ -94,19 +90,18 @@ e_bg_config_get(int container_num, int zone_num, int desk_x, int desk_y) { Eina_List *l, *ll, *entries; - E_Config_Desktop_Background *bg = NULL; + E_Config_Desktop_Background *bg = NULL, *cfbg = NULL; const char *bgfile = ""; + char *entry; int current_spec = 0; /* how specific the setting is - we want the least general one that applies */ /* look for desk specific background. */ if (container_num >= 0 || zone_num >= 0 || desk_x >= 0 || desk_y >= 0) { - for (l = e_config->desktop_backgrounds; l; l = l->next) + EINA_LIST_FOREACH(e_config->desktop_backgrounds, l, cfbg) { - E_Config_Desktop_Background *cfbg; int spec; - cfbg = l->data; if (!cfbg) continue; spec = 0; if (cfbg->container == container_num) spec++; @@ -133,9 +128,9 @@ entries = edje_file_collection_list(bgfile); if (entries) { - for (ll = entries; ll; ll = ll->next) + EINA_LIST_FOREACH(entries, ll, entry) { - if (!strcmp(ll->data, "e/desktop/background")) + if (!strcmp(entry, "e/desktop/background")) { bg = cfbg; current_spec = spec; @@ -154,6 +149,7 @@ const E_Config_Desktop_Background *cfbg; Eina_List *l, *entries; const char *bgfile = ""; + char *entry; int ok = 0; cfbg = e_bg_config_get(container_num, zone_num, desk_x, desk_y); @@ -189,9 +185,9 @@ entries = edje_file_collection_list(bgfile); if (entries) { - for (l = entries; l; l = l->next) + EINA_LIST_FOREACH(entries, l, entry) { - if (!strcmp(l->data, "e/desktop/background")) + if (!strcmp(entry, "e/desktop/background")) { ok = 1; break; @@ -442,13 +438,11 @@ e_bg_del(int container, int zone, int desk_x, int desk_y) { Eina_List *l = NULL; + E_Config_Desktop_Background *cfbg = NULL; E_Event_Bg_Update *ev; - - for (l = e_config->desktop_backgrounds; l; l = l->next) + + EINA_LIST_FOREACH(e_config->desktop_backgrounds, l, cfbg) { - E_Config_Desktop_Background *cfbg; - - cfbg = l->data; if (!cfbg) continue; if ((cfbg->container == container) && (cfbg->zone == zone) && (cfbg->desk_x == desk_x) && (cfbg->desk_y == desk_y)) @@ -477,15 +471,12 @@ E_Container *con; E_Zone *zone; - for (l = e_manager_list(); l; l = l->next) + EINA_LIST_FOREACH(e_manager_list(), l, man) { - man = l->data; - for (ll = man->containers; ll; ll = ll->next) + EINA_LIST_FOREACH(man->containers, ll, con) { - con = ll->data; - for (lll = con->zones; lll; lll = lll->next) + EINA_LIST_FOREACH(con->zones, lll, zone) { - zone = lll->data; e_zone_bg_reconfigure(zone); } } Modified: trunk/e/src/bin/e_bindings.c =================================================================== --- trunk/e/src/bin/e_bindings.c 2009-08-21 14:05:23 UTC (rev 41915) +++ trunk/e/src/bin/e_bindings.c 2009-08-21 15:08:49 UTC (rev 41916) @@ -87,27 +87,12 @@ EAPI int e_bindings_shutdown(void) { - E_Binding_Signal *binds; - E_Binding_Mouse *bindm; - E_Binding_Wheel *bindw; - E_Binding_Edge *binde; - E_Binding_Key *bindk; + E_FREE_LIST(mouse_bindings, _e_bindings_mouse_free); + E_FREE_LIST(key_bindings, _e_bindings_key_free); + E_FREE_LIST(edge_bindings, _e_bindings_edge_free); + E_FREE_LIST(signal_bindings, _e_bindings_signal_free); + E_FREE_LIST(wheel_bindings, _e_bindings_wheel_free); - EINA_LIST_FREE(mouse_bindings, bindm) - _e_bindings_mouse_free(bindm); - - EINA_LIST_FREE(key_bindings, bindk) - _e_bindings_key_free(bindk); - - EINA_LIST_FREE(edge_bindings, binde) - _e_bindings_edge_free(binde); - - EINA_LIST_FREE(signal_bindings, binds) - _e_bindings_signal_free(binds); - - EINA_LIST_FREE(wheel_bindings, bindw) - _e_bindings_wheel_free(bindw); - return 1; } Modified: trunk/e/src/bin/e_border.c =================================================================== --- trunk/e/src/bin/e_border.c 2009-08-21 14:05:23 UTC (rev 41915) +++ trunk/e/src/bin/e_border.c 2009-08-21 15:08:49 UTC (rev 41916) @@ -701,11 +701,9 @@ if (e_config->transient.desktop) { Eina_List *l; - for (l = bd->transients; l; l = l->next) + E_Border *child; + EINA_LIST_FOREACH(bd->transients, l, child) { - E_Border *child; - - child = l->data; e_border_desk_set(child, bd->desk); } } @@ -1207,6 +1205,7 @@ if (e_config->transient.layer) { Eina_List *l; + E_Border *child; /* We need to set raise to one, else the child wont * follow to the new layer. It should be like this, @@ -1214,11 +1213,8 @@ * the transients. */ e_config->transient.raise = 1; - for (l = bd->transients; l; l = l->next) + EINA_LIST_FOREACH(bd->transients, l, child) { - E_Border *child; - - child = l->data; child->layer = layer; } } @@ -1230,7 +1226,7 @@ e_border_raise(E_Border *bd) { E_Event_Border_Stack *ev; - E_Border *last = NULL; + E_Border *last = NULL, *child; Eina_List *l; E_OBJECT_CHECK(bd); @@ -1240,11 +1236,8 @@ if (e_config->transient.raise) { - for (l = eina_list_last(bd->transients); l; l = l->prev) + EINA_LIST_REVERSE_FOREACH(bd->transients, l, child) { - E_Border *child; - - child = l->data; /* Don't stack iconic transients. If the user wants these shown, * thats another option. */ @@ -1320,7 +1313,7 @@ e_border_lower(E_Border *bd) { E_Event_Border_Stack *ev; - E_Border *last = NULL; + E_Border *last = NULL, *child; Eina_List *l; E_OBJECT_CHECK(bd); @@ -1330,11 +1323,8 @@ if (e_config->transient.lower) { - for (l = eina_list_last(bd->transients); l; l = l->prev) + EINA_LIST_REVERSE_FOREACH(bd->transients, l, child) { - E_Border *child; - - child = l->data; /* Don't stack iconic transients. If the user wants these shown, * thats another option. */ @@ -1410,7 +1400,7 @@ { /* TODO: Should stack above allow the border to change level */ E_Event_Border_Stack *ev; - E_Border *last = NULL; + E_Border *last = NULL, *child; Eina_List *l; E_OBJECT_CHECK(bd); @@ -1420,11 +1410,8 @@ if (e_config->transient.raise) { - for (l = eina_list_last(bd->transients); l; l = l->prev) + EINA_LIST_REVERSE_FOREACH(bd->transients, l, child) { - E_Border *child; - - child = l->data; /* Don't stack iconic transients. If the user wants these shown, * thats another option. */ @@ -1468,7 +1455,7 @@ { /* TODO: Should stack below allow the border to change level */ E_Event_Border_Stack *ev; - E_Border *last = NULL; + E_Border *last = NULL, *child; Eina_List *l; E_OBJECT_CHECK(bd); @@ -1478,11 +1465,8 @@ if (e_config->transient.lower) { - for (l = eina_list_last(bd->transients); l; l = l->prev) + EINA_LIST_REVERSE_FOREACH(bd->transients, l, child) { - E_Border *child; - - child = l->data; /* Don't stack iconic transients. If the user wants these shown, * thats another option. */ @@ -2457,12 +2441,10 @@ if (e_config->transient.iconify) { Eina_List *l; + E_Border *child; - for (l = bd->transients; l; l = l->next) + EINA_LIST_FOREACH(bd->transients, l, child) { - E_Border *child; - - child = l->data; e_border_iconify(child); } } @@ -2502,12 +2484,10 @@ if (e_config->transient.iconify) { Eina_List *l; + E_Border *child; - for (l = bd->transients; l; l = l->next) + EINA_LIST_FOREACH(bd->transients, l, child) { - E_Border *child; - - child = l->data; e_border_uniconify(child); } } @@ -2530,11 +2510,9 @@ if (e_config->transient.desktop) { Eina_List *l; - for (l = bd->transients; l; l = l->next) + E_Border *child; + EINA_LIST_FOREACH(bd->transients, l, child) { - E_Border *child; - - child = l->data; child->sticky = 1; e_hints_window_sticky_set(child, 1); e_border_show(child); @@ -2566,11 +2544,9 @@ if (e_config->transient.desktop) { Eina_List *l; - for (l = bd->transients; l; l = l->next) + E_Border *child; + EINA_LIST_FOREACH(bd->transients, l, child) { - E_Border *child; - - child = l->data; child->sticky = 0; e_hints_window_sticky_set(child, 0); } @@ -2668,12 +2644,10 @@ e_border_find_by_alarm(Ecore_X_Sync_Alarm alarm) { Eina_List *l; - - for (l = borders; l; l = l->next) + E_Border *bd; + + EINA_LIST_FOREACH(borders, l, bd) { - E_Border *bd; - - bd = l->data; if ((bd) && (!e_object_is_del(E_OBJECT(bd))) && (bd->client.netwm.sync.alarm == alarm)) return bd; @@ -2691,22 +2665,18 @@ e_border_idler_before(void) { Eina_List *ml, *cl; + E_Manager *man; + E_Container *con; if (!borders) return; - for (ml = e_manager_list(); ml; ml = ml->next) + EINA_LIST_FOREACH(e_manager_list(), ml, man) { - E_Manager *man; - - man = ml->data; - for (cl = man->containers; cl; cl = cl->next) + EINA_LIST_FOREACH(man->containers, cl, con) { - E_Container *con; E_Border_List *bl; E_Border *bd; - - con = cl->data; // pass 1 - eval0. fetch properties on new or on change and // call hooks to decide what to do - maybe move/resize @@ -3354,12 +3324,10 @@ e_border_button_bindings_ungrab_all(void) { Eina_List *l; - - for (l = borders; l; l = l->next) + E_Border *bd; + + EINA_LIST_FOREACH(borders, l, bd) { - E_Border *bd; - - bd = l->data; e_focus_setdown(bd); e_bindings_mouse_ungrab(E_BINDING_CONTEXT_BORDER, bd->win); e_bindings_wheel_ungrab(E_BINDING_CONTEXT_BORDER, bd->win); @@ -3370,12 +3338,10 @@ e_border_button_bindings_grab_all(void) { Eina_List *l; + E_Border *bd; - for (l = borders; l; l = l->next) + EINA_LIST_FOREACH(borders, l, bd) { - E_Border *bd; - - bd = l->data; e_bindings_mouse_grab(E_BINDING_CONTEXT_BORDER, bd->win); e_bindings_wheel_grab(E_BINDING_CONTEXT_BORDER, bd->win); e_focus_setup(bd); @@ -3398,15 +3364,13 @@ e_border_lost_windows_get(E_Zone *zone) { Eina_List *list = NULL, *l; + E_Border *bd; int loss_overlap = 5; E_OBJECT_CHECK_RETURN(zone, NULL); E_OBJECT_TYPE_CHECK_RETURN(zone, E_ZONE_TYPE, NULL); - for (l = borders; l; l = l->next) + EINA_LIST_FOREACH(borders, l, bd) { - E_Border *bd; - - bd = l->data; if (bd->zone) { if ((bd->zone == zone) || @@ -3538,12 +3502,10 @@ e_border_immortal_windows_get(void) { Eina_List *list = NULL, *l; + E_Border *bd; - for (l = borders; l; l = l->next) + EINA_LIST_FOREACH(borders, l, bd) { - E_Border *bd; - - bd = l->data; if (bd->lock_life) list = eina_list_append(list, bd); } @@ -3799,11 +3761,7 @@ ecore_poller_del(bd->ping_poller); bd->ping_poller = NULL; } - while (bd->pending_move_resize) - { - free(bd->pending_move_resize->data); - bd->pending_move_resize = eina_list_remove_list(bd->pending_move_resize, bd->pending_move_resize); - } + E_FREE_LIST(bd->pending_move_resize, free); if (bd->shade.anim) ecore_animator_del(bd->shade.anim); if (bd->border_menu) e_menu_deactivate(bd->border_menu); @@ -3930,6 +3888,7 @@ _e_border_del(E_Border *bd) { E_Event_Border_Remove *ev; + E_Border *child; if (bd->fullscreen) bd->desk->fullscreen_borders--; @@ -4000,13 +3959,9 @@ } bd->parent = NULL; } - while (bd->transients) + EINA_LIST_FREE(bd->transients, child) { - E_Border *child; - - child = bd->transients->data; child->parent = NULL; - bd->transients = eina_list_remove_list(bd->transients, bd->transients); } if (bd->leader) @@ -4023,13 +3978,9 @@ } bd->leader = NULL; } - while (bd->group) + EINA_LIST_FREE(bd->group, child) { - E_Border *child; - - child = bd->group->data; child->leader = NULL; - bd->group = eina_list_remove_list(bd->group, bd->group); } } @@ -5043,13 +4994,11 @@ _e_border_cb_efreet_desktop_list_change(void *data, int ev_type, void *ev) { Eina_List *l; + E_Border *bd; /* mark all borders for desktop/icon updates */ - for (l = borders; l; l = l->next) + EINA_LIST_FOREACH(borders, l, bd) { - E_Border *bd; - - bd = l->data; if (!bd->desktop) { bd->changes.icon = 1; @@ -5066,6 +5015,7 @@ { Efreet_Event_Desktop_Change *event; Eina_List *l; + E_Border *bd; event = ev; e_init_status_set(_("Desktop file scan")); @@ -5073,11 +5023,8 @@ { case EFREET_DESKTOP_CHANGE_ADD: /* If a desktop is added, make the borders without icon retry */ - for (l = borders; l; l = l->next) + EINA_LIST_FOREACH(borders, l, bd) { - E_Border *bd; - - bd = l->data; if (!bd->desktop) { bd->changes.icon = 1; @@ -5087,11 +5034,8 @@ break; case EFREET_DESKTOP_CHANGE_REMOVE: /* If a desktop is removed, drop the .desktop pointer */ - for (l = borders; l; l = l->next) + EINA_LIST_FOREACH(borders, l, bd) { - E_Border *bd; - - bd = l->data; if (bd->desktop == event->current) { efreet_desktop_free(bd->desktop); @@ -5103,12 +5047,8 @@ break; case EFREET_DESKTOP_CHANGE_UPDATE: /* If a desktop is updated, point to the new desktop and update the icon */ - for (l = borders; l; l = l->next) + EINA_LIST_FOREACH(borders, l, bd) { - E_Border *bd; - - bd = l->data; - if (bd->desktop == event->previous) { efreet_desktop_free(bd->desktop); @@ -5132,13 +5072,11 @@ _e_border_cb_config_icon_theme(void *data, int ev_type, void *ev) { Eina_List *l; + E_Border *bd; /* mark all borders for desktop/icon updates */ - for (l = borders; l; l = l->next) + EINA_LIST_FOREACH(borders, l, bd) { - E_Border *bd; - - bd = l->data; bd->changes.icon = 1; bd->changed = 1; } @@ -5717,11 +5655,9 @@ else { Eina_List *l; - for (l = bd->leader->group; l; l = l->next) + E_Border *child; + EINA_LIST_FOREACH(bd->leader->group, l, child) { - E_Border *child; - - child = l->data; if ((child != bd) && (child->focused)) e_border_focus_set(bd, 1, 1); } @@ -6198,11 +6134,9 @@ else { Eina_List *l; - for (l = bd->leader->group; l; l = l->next) + E_Border *child; + EINA_LIST_FOREACH(bd->leader->group, l, child) { - E_Border *child; - - child = l->data; if ((child != bd) && (child->focused)) e_border_focus_set(bd, 1, 1); } @@ -6669,6 +6603,7 @@ _e_border_eval(E_Border *bd) { E_Event_Border_Property *event; + E_Border_Pending_Move_Resize *pnd; int rem_change = 0; int send_event = 1; int zx, zy, zw, zh; @@ -6805,11 +6740,8 @@ } } } - while (bd->pending_move_resize) + EINA_LIST_FREE(bd->pending_move_resize, pnd) { - E_Border_Pending_Move_Resize *pnd; - - pnd = bd->pending_move_resize->data; if ((!bd->lock_client_location) && (pnd->move)) { bd->x = pnd->x; @@ -6831,8 +6763,6 @@ bd->changes.size = 1; } free(pnd); - bd->pending_move_resize = eina_list_remove_list(bd->pending_move_resize, - bd->pending_move_resize); } /* Recreate state */ @@ -7954,6 +7884,7 @@ { E_Container *con; Eina_List *l; + E_Zone *zone; /* still within old zone - leave it there */ if (E_INTERSECTS(bd->x, bd->y, bd->w, bd->h, @@ -7961,11 +7892,8 @@ return; /* find a new zone */ con = bd->zone->container; - for (l = con->zones; l; l = l->next) + EINA_LIST_FOREACH(con->zones, l, zone) { - E_Zone *zone; - - zone = l->data; if (E_INTERSECTS(bd->x, bd->y, bd->w, bd->h, zone->x, zone->y, zone->w, zone->h)) { @@ -8284,18 +8212,14 @@ static void _e_border_hooks_clean(void) { - Eina_List *l, *pl; + Eina_List *l, *ln; + E_Border_Hook *bh; - for (l = _e_border_hooks; l;) + EINA_LIST_FOREACH_SAFE(_e_border_hooks, l, ln, bh) { - E_Border_Hook *bh; - - bh = l->data; - pl = l; - l = l->next; if (bh->delete_me) { - _e_border_hooks = eina_list_remove_list(_e_border_hooks, pl); + _e_border_hooks = eina_list_remove_list(_e_border_hooks, l); free(bh); } } @@ -8305,13 +8229,11 @@ _e_border_hook_call(E_Border_Hook_Point hookpoint, void *bd) { Eina_List *l; + E_Border_Hook *bh; _e_border_hooks_walking++; - for (l = _e_border_hooks; l; l = l->next) + EINA_LIST_FOREACH(_e_border_hooks, l, bh) { - E_Border_Hook *bh; - - bh = l->data; if (bh->delete_me) continue; if (bh->hookpoint == hookpoint) bh->func(bh->data, bd); } @@ -8362,7 +8284,7 @@ EAPI E_Border * e_border_under_pointer_get(E_Desk *desk, E_Border *exclude) { - E_Border *bd = NULL; + E_Border *bd = NULL, *cbd; Eina_List *l; int x, y; @@ -8376,11 +8298,8 @@ else return NULL; - for (l = e_border_raise_stack_get(); l; l = l->next) + EINA_LIST_FOREACH(e_border_raise_stack_get(), l, cbd) { - E_Border *cbd; - - cbd = l->data; if (!cbd) continue; /* If a border was specified which should be excluded from the list * (because it will be closed shortly for example), skip */ Modified: trunk/e/src/bin/e_box.c =================================================================== --- trunk/e/src/bin/e_box.c 2009-08-21 14:05:23 UTC (rev 41915) +++ trunk/e/src/bin/e_box.c 2009-08-21 15:08:49 UTC (rev 41916) @@ -164,15 +164,17 @@ E_Smart_Data *sd; int i = 0; Eina_List *l; + Evas_Object *item; if (!child) return 0; sd = evas_object_smart_data_get(obj); if (!sd) return 0; _e_box_smart_adopt(sd, child); sd->items = eina_list_prepend_relative(sd->items, child, before); - for (i = 0, l = sd->items; l; l = l->next, i++) + EINA_LIST_FOREACH(sd->items, l, item) { - if (l->data == child) break; + if (item == child) break; + i++; } sd->changed = 1; if (sd->frozen <= 0) _e_box_smart_reconfigure(sd); @@ -185,15 +187,17 @@ E_Smart_Data *sd; int i = 0; Eina_List *l; + Evas_Object *item; if (!child) return 0; sd = evas_object_smart_data_get(obj); if (!sd) return 0; _e_box_smart_adopt(sd, child); sd->items = eina_list_append_relative(sd->items, child, after); - for (i = 0, l = sd->items; l; l = l->next, i++) + EINA_LIST_FOREACH(sd->items, l, item) { - if (l->data == child) break; + if (item == child) break; + i++; } sd->changed = 1; if (sd->frozen <= 0) _e_box_smart_reconfigure(sd); @@ -405,6 +409,7 @@ { Evas_Coord x, y, w, h, xx, yy; Eina_List *l; + Evas_Object *obj; int minw, minh, wdif, hdif; int count, expand; @@ -430,12 +435,9 @@ y = y + ((h - minh) * (1.0 - sd->align.y)); h = minh; } - for (l = sd->items; l; l = l->next) + EINA_LIST_FOREACH(sd->items, l, obj) { E_Box_Item *bi; - Evas_Object *obj; - - obj = l->data; bi = evas_object_data_get(obj, "e_box_data"); if (bi) { @@ -466,12 +468,10 @@ hdif = h - minh; xx = x; yy = y; - for (l = sd->items; l; l = l->next) + EINA_LIST_FOREACH(sd->items, l, obj) { E_Box_Item *bi; - Evas_Object *obj; - obj = l->data; bi = evas_object_data_get(obj, "e_box_data"); if (bi) { @@ -578,6 +578,7 @@ _e_box_smart_extents_calculate(E_Smart_Data *sd) { Eina_List *l; + Evas_Object *obj; int minw, minh; /* FIXME: need to calc max */ @@ -588,12 +589,10 @@ minh = 0; if (sd->homogenous) { - for (l = sd->items; l; l = l->next) + EINA_LIST_FOREACH(sd->items, l, obj) { E_Box_Item *bi; - Evas_Object *obj; - obj = l->data; bi = evas_object_data_get(obj, "e_box_data"); if (bi) { @@ -608,12 +607,10 @@ } else { - for (l = sd->items; l; l = l->next) + EINA_LIST_FOREACH(sd->items, l, obj) { E_Box_Item *bi; - Evas_Object *obj; - obj = l->data; bi = evas_object_data_get(obj, "e_box_data"); if (bi) { @@ -698,7 +695,7 @@ { Evas_Object *child; - child = sd->items->data; + child = eina_list_data_get(sd->items); e_box_unpack(child); } e_box_thaw(obj); @@ -718,16 +715,17 @@ if ((x == sd->x) && (y == sd->y)) return; { Eina_List *l; + Evas_Object *item; Evas_Coord dx, dy; dx = x - sd->x; dy = y - sd->y; - for (l = sd->items; l; l = l->next) + EINA_LIST_FOREACH(sd->items, l, item) { Evas_Coord ox, oy; - evas_object_geometry_get(l->data, &ox, &oy, NULL, NULL); - evas_object_move(l->data, ox + dx, oy + dy); + evas_object_geometry_get(item, &ox, &oy, NULL, NULL); + evas_object_move(item, ox + dx, oy + dy); } } sd->x = x; Modified: trunk/e/src/bin/e_canvas.c =================================================================== --- trunk/e/src/bin/e_canvas.c 2009-08-21 14:05:23 UTC (rev 41915) +++ trunk/e/src/bin/e_canvas.c 2009-08-21 15:08:49 UTC (rev 41916) @@ -80,13 +80,12 @@ e_canvas_recache(void) { Eina_List *l; - - for (l = _e_canvases; l; l = l->next) + Ecore_Evas *ee; + + EINA_LIST_FOREACH(_e_canvases, l, ee) { - Ecore_Evas *ee; Evas *e; - ee = l->data; e = ecore_evas_get(ee); evas_image_cache_set(e, e_config->image_cache * 1024); evas_font_cache_set(e, e_config->font_cache * 1024); @@ -111,13 +110,12 @@ e_canvas_cache_flush(void) { Eina_List *l; - - for (l = _e_canvases; l; l = l->next) + Ecore_Evas *ee; + + EINA_LIST_FOREACH(_e_canvases, l, ee) { - Ecore_Evas *ee; Evas *e; - ee = l->data; e = ecore_evas_get(ee); evas_image_cache_flush(e); evas_font_cache_flush(e); @@ -130,13 +128,12 @@ e_canvas_cache_reload(void) { Eina_List *l; - - for (l = _e_canvases; l; l = l->next) + Ecore_Evas *ee; + + EINA_LIST_FOREACH(_e_canvases, l, ee) { - Ecore_Evas *ee; Evas *e; - ee = l->data; e = ecore_evas_get(ee); evas_image_cache_reload(e); } @@ -146,13 +143,12 @@ e_canvas_idle_flush(void) { Eina_List *l; - - for (l = _e_canvases; l; l = l->next) + Ecore_Evas *ee; + + EINA_LIST_FOREACH(_e_canvases, l, ee) { - Ecore_Evas *ee; Evas *e; - ee = l->data; e = ecore_evas_get(ee); evas_render_idle_flush(e); } @@ -162,13 +158,12 @@ e_canvas_rehint(void) { Eina_List *l; - - for (l = _e_canvases; l; l = l->next) + Ecore_Evas *ee; + + EINA_LIST_FOREACH(_e_canvases, l, ee) { - Ecore_Evas *ee; Evas *e; - ee = l->data; e = ecore_evas_get(ee); if (e_config->font_hinting == 0) evas_font_hinting_set(e, EVAS_FONT_HINTING_BYTECODE); Modified: trunk/e/src/bin/e_color_class.c =================================================================== --- trunk/e/src/bin/e_color_class.c 2009-08-21 14:05:23 UTC (rev 41915) +++ trunk/e/src/bin/e_color_class.c 2009-08-21 15:08:49 UTC (rev 41916) @@ -7,12 +7,10 @@ e_color_class_init(void) { Eina_List *l; + E_Color_Class *cc; - for (l = e_config->color_classes; l; l = l->next) + EINA_LIST_FOREACH(e_config->color_classes, l, cc) { - E_Color_Class *cc; - - cc = l->data; if (!cc) continue; printf("INIT CC: %s, %d %d %d %d\n", cc->name, cc->r, cc->g, cc->b, cc->a); @@ -90,9 +88,8 @@ Eina_List *l; E_Color_Class *cc = NULL; - for (l = e_config->color_classes; l; l = l->next) + EINA_LIST_FOREACH(e_config->color_classes, l, cc) { - cc = l->data; if (!cc) continue; if (!strcmp(cc->name, name)) Modified: trunk/e/src/bin/e_config.c =================================================================== --- trunk/e/src/bin/e_config.c 2009-08-21 14:05:23 UTC (rev 41915) +++ trunk/e/src/bin/e_config.c 2009-08-21 15:08:49 UTC (rev 41916) @@ -1303,8 +1303,6 @@ for (i =1; i <= _e_config_revisions; i++) { - char buf2[4096]; - e_user_dir_snprintf(buf, sizeof(buf), "config/%s/%s.%i.cfg", _e_config_profile, domain, i); ef = eet_open(buf, EET_FILE_MODE_READ); @@ -1450,12 +1448,10 @@ e_config_binding_mouse_match(E_Config_Binding_Mouse *eb_in) { Eina_List *l; - - for (l = e_config->mouse_bindings; l; l = l->next) + E_Config_Binding_Mouse *eb; + + EINA_LIST_FOREACH(e_config->mouse_bindings, l, eb) { - E_Config_Binding_Mouse *eb; - - eb = l->data; if ((eb->context == eb_in->context) && (eb->button == eb_in->button) && (eb->modifiers == eb_in->modifiers) && @@ -1473,12 +1469,10 @@ e_config_binding_key_match(E_Config_Binding_Key *eb_in) { Eina_List *l; + E_Config_Binding_Key *eb; - for (l = e_config->key_bindings; l; l = l->next) + EINA_LIST_FOREACH(e_config->mouse_bindings, l, eb) { - E_Config_Binding_Key *eb; - - eb = l->data; if ((eb->context == eb_in->context) && (eb->modifiers == eb_in->modifiers) && (eb->any_mod == eb_in->any_mod) && @@ -1497,12 +1491,10 @@ e_config_binding_edge_match(E_Config_Binding_Edge *eb_in) { Eina_List *l; + E_Config_Binding_Edge *eb; - for (l = e_config->edge_bindings; l; l = l->next) + EINA_LIST_FOREACH(e_config->edge_bindings, l, eb) { - E_Config_Binding_Edge *eb; - - eb = l->data; if ((eb->context == eb_in->context) && (eb->modifiers == eb_in->modifiers) && (eb->any_mod == eb_in->any_mod) && @@ -1521,12 +1513,10 @@ e_config_binding_signal_match(E_Config_Binding_Signal *eb_in) { Eina_List *l; + E_Config_Binding_Signal *eb; - for (l = e_config->signal_bindings; l; l = l->next) + EINA_LIST_FOREACH(e_config->signal_bindings, l, eb) { - E_Config_Binding_Signal *eb; - - eb = l->data; if ((eb->context == eb_in->context) && (eb->modifiers == eb_in->modifiers) && (eb->any_mod == eb_in->any_mod) && @@ -1547,12 +1537,10 @@ e_config_binding_wheel_match(E_Config_Binding_Wheel *eb_in) { Eina_List *l; - - for (l = e_config->wheel_bindings; l; l = l->next) + E_Config_Binding_Wheel *eb; + + EINA_LIST_FOREACH(e_config->wheel_bindings, l, eb) { - E_Config_Binding_Wheel *eb; - - eb = l->data; if ((eb->context == eb_in->context) && (eb->direction == eb_in->direction) && (eb->z == eb_in->z) && Modified: trunk/e/src/bin/e_config_dialog.c =================================================================== --- trunk/e/src/bin/e_config_dialog.c 2009-08-21 14:05:23 UTC (rev 41915) +++ trunk/e/src/bin/e_config_dialog.c 2009-08-21 15:08:49 UTC (rev 41916) @@ -83,10 +83,8 @@ Eina_List *l; E_Config_Dialog *cfd; - for (l = _e_config_dialog_list; l; l = l->next) + EINA_LIST_FOREACH(_e_config_dialog_list, l, cfd) { - cfd = l->data; - if ((!e_util_strcmp(name, cfd->name)) && (!e_util_strcmp(class, cfd->class))) { @@ -116,12 +114,11 @@ e_config_dialog_get(const char *name, const char *class) { Eina_List *l; + E_Config_Dialog *cfd; - for (l = _e_config_dialog_list; l; l = l->next) + EINA_LIST_FOREACH(_e_config_dialog_list, l, cfd) { - E_Config_Dialog *cfd; - - if (!(cfd = l->data)) continue; + if (!cfd) continue; if ((!e_util_strcmp(name, cfd->name)) && (!e_util_strcmp(class, cfd->class))) { Modified: trunk/e/src/bin/e_container.c =================================================================== --- trunk/e/src/bin/e_container.c 2009-08-21 14:05:23 UTC (rev 41915) +++ trunk/e/src/bin/e_container.c 2009-08-21 15:08:49 UTC (rev 41916) @@ -51,11 +51,7 @@ EAPI int e_container_shutdown(void) { - while (handlers) - { - ecore_event_handler_del(handlers->data); - handlers = eina_list_remove_list(handlers, handlers); - } + E_FREE_LIST(handlers, ecore_event_handler_del); return 1; } @@ -159,11 +155,9 @@ screens = (Eina_List *)e_xinerama_screens_get(); if (screens) { - for (l = screens; l; l = l->next) + E_Screen *scr; + EINA_LIST_FOREACH(screens, l, scr) { - E_Screen *scr; - - scr = l->data; zone = e_zone_new(con, scr->screen, scr->escreen, scr->x, scr->y, scr->w, scr->h); } } @@ -208,35 +202,32 @@ e_container_current_get(E_Manager *man) { Eina_List *l; + E_Container *con; E_OBJECT_CHECK_RETURN(man, NULL); E_OBJECT_TYPE_CHECK_RETURN(man, E_MANAGER_TYPE, NULL); - for (l = man->containers; l; l = l->next) + EINA_LIST_FOREACH(man->containers, l, con) { - E_Container *con; - - if (!(con = l->data)) continue; + if (!con) continue; if (con->visible) return con; } /* If noone is available, return the first */ if (!man->containers) return NULL; l = man->containers; - return (E_Container *)l->data; + return (E_Container *)eina_list_data_get(l); } EAPI E_Container * e_container_number_get(E_Manager *man, int num) { Eina_List *l; + E_Container *con; E_OBJECT_CHECK_RETURN(man, NULL); E_OBJECT_TYPE_CHECK_RETURN(man, E_MANAGER_TYPE, NULL); - for (l = man->containers; l; l = l->next) + EINA_LIST_FOREACH(man->containers, l, con) { - E_Container *con; - - con = l->data; if (con->num == num) return con; } return NULL; @@ -306,14 +297,12 @@ e_container_zone_at_point_get(E_Container *con, int x, int y) { Eina_List *l = NULL; + E_Zone *zone = NULL; E_OBJECT_CHECK_RETURN(con, NULL); E_OBJECT_TYPE_CHECK_RETURN(con, E_CONTAINER_TYPE, NULL); - for (l = con->zones; l; l = l->next) + EINA_LIST_FOREACH(con->zones, l, zone) { - E_Zone *zone; - - zone = l->data; if (E_INSIDE(x, y, zone->x, zone->y, zone->w, zone->h)) return zone; } @@ -324,14 +313,12 @@ e_container_zone_number_get(E_Container *con, int num) { Eina_List *l = NULL; + E_Zone *zone = NULL; E_OBJECT_CHECK_RETURN(con, NULL); E_OBJECT_TYPE_CHECK_RETURN(con, E_CONTAINER_TYPE, NULL); - for (l = con->zones; l; l = l->next) + EINA_LIST_FOREACH(con->zones, l, zone) { - E_Zone *zone; - - zone = l->data; if (zone->num == num) return zone; } return NULL; @@ -341,14 +328,12 @@ e_container_zone_id_get(E_Container *con, int id) { Eina_List *l = NULL; + E_Zone *zone = NULL; E_OBJECT_CHECK_RETURN(con, NULL); E_OBJECT_TYPE_CHECK_RETURN(con, E_CONTAINER_TYPE, NULL); - for (l = con->zones; l; l = l->next) + EINA_LIST_FOREACH(con->zones, l, zone) { - E_Zone *zone; - - zone = l->data; if (zone->id == id) return zone; } return NULL; @@ -459,15 +444,13 @@ e_container_shape_change_callback_del(E_Container *con, void (*func) (void *data, E_Container_Shape *es, E_Container_Shape_Change ch), void *data) { Eina_List *l = NULL; + E_Container_Shape_Callback *cb = NULL; /* FIXME: if we call this from within a callback we are in trouble */ E_OBJECT_CHECK(con); E_OBJECT_TYPE_CHECK(con, E_CONTAINER_TYPE); - for (l = con->shape_change_cb; l; l = l->next) + EINA_LIST_FOREACH(con->shape_change_cb, l, cb) { - E_Container_Shape_Callback *cb; - - cb = l->data; if ((cb->func == func) && (cb->data == data)) { con->shape_change_cb = eina_list_remove_list(con->shape_change_cb, l); @@ -488,7 +471,6 @@ EAPI void e_container_shape_rects_set(E_Container_Shape *es, Ecore_X_Rectangle *rects, int num) { - Eina_List *l = NULL; int i; E_Rect *r; @@ -496,9 +478,7 @@ E_OBJECT_TYPE_CHECK(es, E_CONTAINER_SHAPE_TYPE); if (es->shape) { - for (l = es->shape; l; l = l->next) - free(l->data); - eina_list_free(es->shape); + E_FREE_LIST(es->shape, free); es->shape = NULL; } if ((rects) && (num == 1) && @@ -668,8 +648,8 @@ /* Find the window below this one */ l = eina_list_data_find_list(bd->zone->container->layers[pos].clients, bd); - if (l->prev) - above = l->prev->data; + if (eina_list_prev(l)) + above = eina_list_data_get(eina_list_prev(l)); else { /* Need to check the layers below */ @@ -678,7 +658,7 @@ if ((bd->zone->container->layers[i].clients) && (l = eina_list_last(bd->zone->container->layers[i].clients))) { - above = l->data; + above = eina_list_data_get(l); break; } } @@ -722,8 +702,8 @@ /* Find the window above this one */ l = eina_list_data_find_list(bd->zone->container->layers[pos].clients, bd); - if (l->next) - below = l->next->data; + if (eina_list_next(l)) + below = eina_list_data_get(eina_list_next(l)); else { /* Need to check the layers above */ @@ -731,7 +711,7 @@ { if (bd->zone->container->layers[i].clients) { - below = bd->zone->container->layers[i].clients->data; + below = eina_list_data_get(bd->zone->container->layers[i].clients); break; } } @@ -849,9 +829,9 @@ if (!list->clients) return NULL; - bd = list->clients->data; + bd = eina_list_data_get(list->clients); - list->clients = list->clients->next; + list->clients = eina_list_next(list->clients); while ((list->layer < 6) && (!list->clients)) list->clients = list->container->layers[++list->layer].clients; return bd; @@ -864,9 +844,9 @@ if (!list->clients) return NULL; - bd = list->clients->data; + bd = eina_list_data_get(list->clients); - list->clients = list->clients->prev; + list->clients = eina_list_prev(list->clients); while ((list->layer > 0) && (!list->clients)) { list->layer--; @@ -886,20 +866,14 @@ EAPI void e_container_all_freeze(void) { - Eina_List *managers, *l; + Eina_List *l, *ll; + E_Manager *man; + E_Container *con; - managers = e_manager_list(); - for (l = managers; l; l = l->next) + EINA_LIST_FOREACH(e_manager_list(), l, man) { - Eina_List *ll; - E_Manager *man; - - man = l->data; - for (ll = man->containers; ll; ll = ll->next) + EINA_LIST_FOREACH(man->containers, ll, con) { - E_Container *con; - - con = ll->data; evas_event_freeze(con->bg_evas); } } @@ -908,20 +882,14 @@ EAPI void e_container_all_thaw(void) { - Eina_List *managers, *l; + Eina_List *l, *ll; + E_Manager *man; + E_Container *con; - managers = e_manager_list(); - for (l = managers; l; l = l->next) + EINA_LIST_FOREACH(e_manager_list(), l, man) { - Eina_List *ll; - E_Manager *man; - - man = l->data; - for (ll = man->containers; ll; ll = ll->next) + EINA_LIST_FOREACH(man->containers, ll, con) { - E_Container *con; - - con = ll->data; evas_event_thaw(con->bg_evas); } } @@ -944,21 +912,15 @@ for (i = 0; i < 7; i++) { - for (l = con->layers[i].clients; l;) + EINA_LiST_FOREACH(con->layers[i].clients, l, tmp) { - tmp = l; - l = l->next; - e_object_free(E_OBJECT(tmp->data)); + e_object_free(E_OBJECT(tmp)); } } */ l = con->zones; con->zones = NULL; - while (l) - { - e_object_del(E_OBJECT(l->data)); - l = eina_list_remove_list(l, l); - } + E_FREE_LIST(l, e_object_del); con->manager->containers = eina_list_remove(con->manager->containers, con); e_canvas_del(con->bg_ecore_evas); ecore_evas_free(con->bg_ecore_evas); @@ -973,20 +935,14 @@ static E_Container * _e_container_find_by_event_window(Ecore_X_Window win) { - Eina_List *managers, *l; + Eina_List *l, *ll; + E_Manager *man; + E_Container *con; - managers = e_manager_list(); - for (l = managers; l; l = l->next) + EINA_LIST_FOREACH(e_manager_list(), l, man) { - Eina_List *ll; - E_Manager *man; - - man = l->data; - for (ll = man->containers; ll; ll = ll->next) + EINA_LIST_FOREACH(man->containers, ll, con) { - E_Container *con; - - con = ll->data; if (con->event_win == win) return con; } } @@ -1115,12 +1071,8 @@ static void _e_container_shape_free(E_Container_Shape *es) { - Eina_List *l = NULL; - es->con->shapes = eina_list_remove(es->con->shapes, es); - for (l = es->shape; l; l = l->next) - free(l->data); - eina_list_free(es->shape); + E_FREE_LIST(es->shape, free); free(es); } @@ -1128,13 +1080,12 @@ _e_container_shape_change_call(E_Container_Shape *es, E_Container_Shape_Change ch) { Eina_List *l = NULL; + E_Container_Shape_Callback *cb = NULL; if ((!es) || (!es->con) || (!es->con->shape_change_cb)) return; - for (l = es->con->shape_change_cb; l; l = l->next) + EINA_LIST_FOREACH(es->con->shape_change_cb, l, cb) { - E_Container_Shape_Callback *cb; - - if (!(cb = l->data)) continue; + if (!cb) continue; cb->func(cb->data, es, ch); } } @@ -1144,6 +1095,8 @@ { E_Event_Container_Resize *ev; Eina_List *l, *screens, *zones = NULL; + E_Zone *zone; + E_Screen *scr; int i; ev = calloc(1, sizeof(E_Event_Container_Resize)); @@ -1155,14 +1108,10 @@ if (screens) { - for (l = con->zones; l; l = l->next) - zones = eina_list_append(zones, l->data); - for (l = screens; l; l = l->next) + EINA_LIST_FOREACH(con->zones, l, zone) + zones = eina_list_append(zones, zone); + EINA_LIST_FOREACH(screens, l, scr) { - E_Screen *scr; - E_Zone *zone; - - scr = l->data; zone = e_container_zone_id_get(con, scr->escreen); if (zone) { @@ -1173,14 +1122,12 @@ else { Eina_List *ll; + E_Config_Shelf *cf_es; zone = e_zone_new(con, scr->screen, scr->escreen, scr->x, scr->y, scr->w, scr->h); /* find any shelves configured for this zone and add them in */ - for (ll = e_config->shelves; ll; ll = ll->next) + EINA_LIST_FOREACH(e_config->shelves, ll, cf_es) { - E_Config_Shelf *cf_es; - - cf_es = ll->data; if (e_util_container_zone_id_get(cf_es->container, cf_es->zone) == zone) e_shelf_config_new(zone, cf_es); } @@ -1191,37 +1138,28 @@ E_Zone *spare_zone = NULL; Eina_List *ll; - for (ll = con->zones; ll; ll = ll->next) + EINA_LIST_FOREACH(con->zones, ll, spare_zone) { - spare_zone = ll->data; if (eina_list_data_find(zones, spare_zone)) spare_zone = NULL; else break; } - while (zones) + EINA_LIST_FREE(zones, zone) { - E_Zone *zone; Eina_List *shelves, *ll, *del_shelves; + E_Shelf *es; E_Border_List *bl; E_Border *bd; - zone = zones->data; /* delete any shelves on this zone */ shelves = e_shelf_list(); del_shelves = NULL; - for (ll = shelves; ll; ll = ll->next) + EINA_LIST_FOREACH(shelves, ll, es) { - E_Shelf *es; - - es = ll->data; if (es->zone == zone) del_shelves = eina_list_append(del_shelves, es); } - while (del_shelves) - { - e_object_del(E_OBJECT(del_shelves->data)); - del_shelves = eina_list_remove_list(del_shelves, del_shelves); - } + E_FREE_LIST(del_shelves, e_object_del); bl = e_container_border_list_first(zone->container); while ((bd = e_container_border_list_next(bl))) { @@ -1236,7 +1174,6 @@ } e_container_border_list_free(bl); e_object_del(E_OBJECT(zone)); - zones = eina_list_remove_list(zones, zones); } } } @@ -1254,17 +1191,15 @@ for (i = 0; i < 7; i++) { Eina_List *tmp = NULL; + E_Border *bd; /* Make temporary list as e_border_res_change_geometry_restore * rearranges the order. */ - for (l = con->layers[i].clients; l; l = l->next) - tmp = eina_list_append(tmp, l->data); + EINA_LIST_FOREACH(con->layers[i].clients, l, bd) + tmp = eina_list_append(tmp, bd); - for (l = tmp; l; l = l->next) + EINA_LIST_FOREACH(tmp, l, bd) { - E_Border *bd; - - bd = l->data; e_border_res_change_geometry_save(bd); e_border_res_change_geometry_restore(bd); } Modified: trunk/e/src/bin/e_desk.c =================================================================== --- trunk/e/src/bin/e_desk.c 2009-08-21 14:05:23 UTC (rev 41915) +++ trunk/e/src/bin/e_desk.c 2009-08-21 15:08:49 UTC (rev 41916) @@ -49,6 +49,7 @@ { E_Desk *desk; Eina_List *l; + E_Config_Desktop_Name *cfname; char name[40]; int ok; @@ -64,11 +65,8 @@ /* Get current desktop's name */ ok = 0; - for (l = e_config->desktop_names; l; l = l->next) + EINA_LIST_FOREACH(e_config->desktop_names, l, cfname) { - E_Config_Desktop_Name *cfname; - - cfname = l->data; if ((cfname->container >= 0) && (zone->container->num != cfname->container)) continue; if ((cfname->zone >= 0) && @@ -125,12 +123,10 @@ e_desk_name_del(int container, int zone, int desk_x, int desk_y) { Eina_List *l = NULL; + E_Config_Desktop_Name *cfname = NULL; - for (l = e_config->desktop_names; l; l = l->next) + EINA_LIST_FOREACH(e_config->desktop_names, l, cfname) { - E_Config_Desktop_Name *cfname; - - cfname = l->data; if ((cfname->container == container) && (cfname->zone == zone) && (cfname->desk_x == desk_x) && (cfname->desk_y == desk_y)) { @@ -151,18 +147,16 @@ E_Container *con; E_Zone *zone; E_Desk *desk; + E_Config_Desktop_Name *cfname; int d_x, d_y, ok; char name[40]; - for (m = e_manager_list(); m; m = m->next) + EINA_LIST_FOREACH(e_manager_list(), m, man) { - man = m->data; - for (c = man->containers; c; c = c->next) + EINA_LIST_FOREACH(man->containers, c, con) { - con = c->data; - for (z = con->zones; z; z = z->next) + EINA_LIST_FOREACH(con->zones, z, zone) { - zone = z->data; for (d_x = 0; d_x < zone->desk_x_count; d_x++) { for (d_y = 0; d_y < zone->desk_y_count; d_y++) @@ -170,11 +164,8 @@ desk = zone->desks[d_x + zone->desk_x_count * d_y]; ok = 0; - for (l = e_config->desktop_names; l; l = l->next) + EINA_LIST_FOREACH(e_config->desktop_names, l, cfname) { - E_Config_Desktop_Name *cfname; - - cfname = l->data; if ((cfname->container >= 0) && (con->num != cfname->container)) continue; if ((cfname->zone >= 0) && @@ -209,6 +200,7 @@ E_Event_Desk_Before_Show *eev; E_Event_Desk_After_Show *eeev; Eina_List *l; + E_Shelf *es; int was_zone = 0, x, y, dx = 0, dy = 0, prev_x = 0, prev_y = 0; E_OBJECT_CHECK(desk); @@ -288,15 +280,14 @@ e_object_ref(E_OBJECT(desk)); ecore_event_add(E_EVENT_DESK_SHOW, ev, _e_border_event_desk_show_free, NULL); - for (l = e_shelf_list(); l; l = l->next) + EINA_LIST_FOREACH(e_shelf_list(), l, es) { Eina_List *ll; - E_Shelf *es; E_Config_Shelf *cf_es; E_Zone *zone; + E_Config_Shelf_Desk *sd; int show_shelf=0; - es = l->data; if (!es) continue; if (!es->cfg->desk_show_mode) continue; cf_es = es->cfg; @@ -305,11 +296,8 @@ zone = e_util_zone_current_get(e_manager_current_get()); if (cf_es->zone != zone->num) continue; - for (ll = es->cfg->desk_list; ll; ll = ll->next) + EINA_LIST_FOREACH(es->cfg->desk_list, ll, sd) { - E_Config_Shelf_Desk *sd; - - sd = ll->data; if (!sd) continue; if ((desk->x == sd->x) && (desk->y == sd->y)) { @@ -382,9 +370,8 @@ Eina_List *l = NULL; E_Border *bd; - for (l = e_border_focus_stack_get(); l; l = l->next) + EINA_LIST_FOREACH(e_border_focus_stack_get(), l, bd) { - bd = l->data; if ((!bd->iconic) && (bd->visible) && (bd->desk == desk) && (bd->client.icccm.accepts_focus || bd->client.icccm.take_focus) && (bd->client.netwm.type != ECORE_X_WINDOW_TYPE_DOCK) && Modified: trunk/e/src/bin/e_desklock.c =================================================================== --- trunk/e/src/bin/e_desklock.c 2009-08-21 14:05:23 UTC (rev 41915) +++ trunk/e/src/bin/e_desklock.c 2009-08-21 15:08:49 UTC (rev 41916) @@ -150,6 +150,7 @@ e_desklock_show(void) { Eina_List *managers, *l, *l2, *l3; + E_Manager *man; E_Desklock_Popup_Data *edp; Evas_Coord mw, mh; E_Zone *current_zone; @@ -204,13 +205,11 @@ managers = e_manager_list(); if (!e_grabinput_get(edd->elock_wnd, 0, edd->elock_wnd)) { - for (l = managers; l; l = l->next) + EINA_LIST_FOREACH(managers, l, man) { - E_Manager *man; Ecore_X_Window *windows; int wnum; - man = l->data; windows = ecore_x_window_children_get(man->root, &wnum); if (windows) { @@ -254,21 +253,14 @@ zone_counter = 0; total_zone_num = _e_desklock_zone_num_get(); - for (l = managers; l; l = l->next) + EINA_LIST_FOREACH(managers, l, man) { - E_Manager *man; - - man = l->data; - for (l2 = man->containers; l2; l2 = l2->next) + E_Container *con; + EINA_LIST_FOREACH(man->containers, l2, con) { - E_Container *con; - - con = l2->data; - for (l3 = con->zones; l3; l3 = l3->next) + E_Zone *zone; + EINA_LIST_FOREACH(con->zones, l3, zone) { - E_Zone *zone; - - zone = l3->data; edp = E_NEW(E_Desklock_Popup_Data, 1); if (edp) { @@ -413,10 +405,9 @@ if (edd->elock_grab_break_wnd) ecore_x_window_show(edd->elock_grab_break_wnd); - - while (edd->elock_wnd_list) + + EINA_LIST_FREE(edd->elock_wnd_list, edp) { - edp = edd->elock_wnd_list->data; if (edp) { e_popup_hide(edp->popup_wnd); @@ -429,14 +420,9 @@ e_util_defer_object_del(E_OBJECT(edp->popup_wnd)); E_FREE(edp); } - edd->elock_wnd_list = eina_list_remove_list(edd->elock_wnd_list, edd->elock_wnd_list); } - while (edd->handlers) - { - ecore_event_handler_del(edd->handlers->data); - edd->handlers = eina_list_remove_list(edd->handlers, edd->handlers); - } + E_FREE_LIST(edd->handlers, ecore_event_handler_del); e_grabinput_release(edd->elock_wnd, edd->elock_wnd); ecore_x_window_free(edd->elock_wnd); @@ -533,10 +519,8 @@ if (current_zone == last_active_zone) return 1; - for (l = edd->elock_wnd_list; l; l = l->next) + EINA_LIST_FOREACH(edd->elock_wnd_list, l, edp) { - edp = l->data; - if (!edp) continue; if (edp->popup_wnd->zone == last_active_zone) @@ -561,9 +545,8 @@ *pp = '*'; *pp = 0; - for (l = edd->elock_wnd_list; l; l = l->next) + EINA_LIST_FOREACH(edd->elock_wnd_list, l, edp) { - edp = l->data; edje_object_part_text_set(edp->login_box, "e.text.password", passwd_hidden); } @@ -606,16 +589,14 @@ { int num; Eina_List *l, *l2; + E_Manager *man; num = 0; - for (l = e_manager_list(); l; l = l->next) + EINA_LIST_FOREACH(e_manager_list(), l, man) { - E_Manager *man = l->data; - - for (l2 = man->containers; l2; l2 = l2->next) + E_Container *con; + EINA_LIST_FOREACH(man->containers, l2, con) { - E_Container *con = l2->data; - num += eina_list_count(con->zones); } } @@ -657,6 +638,7 @@ _e_desklock_state_set(int state) { Eina_List *l; + E_Desklock_Popup_Data *edp; const char *signal, *text; if (!edd) return; @@ -672,10 +654,8 @@ text = "The password you entered is invalid. Try again."; } - for (l = edd->elock_wnd_list; l; l = l->next) + EINA_LIST_FOREACH(edd->elock_wnd_list, l, edp) { - E_Desklock_Popup_Data *edp; - edp = l->data; edje_object_signal_emit(edp->login_box, signal, "e.desklock"); edje_object_signal_emit(edp->bg_object, signal, "e.desklock"); edje_object_part_text_set(edp->login_box, "e.text.title", text); Modified: trunk/e/src/bin/e_dnd.c =================================================================== --- trunk/e/src/bin/e_dnd.c 2009-08-21 14:05:23 UTC (rev 41915) +++ trunk/e/src/bin/e_dnd.c 2009-08-21 15:08:49 UTC (rev 41916) @@ -129,23 +129,12 @@ EAPI int e_dnd_shutdown(void) { - Ecore_Event_Handler *h; + E_FREE_LIST(_drag_list, e_object_del); - while (_drag_list) - { - E_Drag *drag = _drag_list->data; - e_object_del(E_OBJECT(drag)); - } + E_FREE_LIST(_drop_handlers, e_drop_handler_del); - while (_drop_handlers) - { - E_Drop_Handler *h = _drop_handlers->data; - e_drop_handler_del(h); - } + E_FREE_LIST(_event_handlers, ecore_event_handler_del); - EINA_LIST_FREE(_event_handlers, h) - ecore_event_handler_del(h); - eina_hash_free(_drop_win_hash); eina_hash_free(_drop_handlers_responsives); Modified: trunk/e/src/bin/e_exehist.c =================================================================== --- trunk/e/src/bin/e_exehist.c 2009-08-21 14:05:23 UTC (rev 41915) +++ trunk/e/src/bin/e_exehist.c 2009-08-21 15:08:49 UTC (rev 41916) @@ -116,9 +116,8 @@ _e_exehist_load(); if (!_e_exehist) return; - for (l = _e_exehist->history; l; l = l->next) + EINA_LIST_FOREACH(_e_exehist->history, l, ei) { - ei = l->data; if ((ei->exe) && (!strcmp(exe, ei->exe))) { eina_stringshare_del(ei->exe); @@ -151,6 +150,7 @@ e_exehist_popularity_get(const char *exe) { Eina_List *l; + E_Exehist_Item *ei; const char *normal; int count = 0; @@ -158,11 +158,8 @@ if (!_e_exehist) return 0; normal = _e_exehist_normalize_exe(exe); if (!normal) return 0; - for (l = _e_exehist->history; l; l = l->next) + EINA_LIST_FOREACH(_e_exehist->history, l, ei) { - E_Exehist_Item *ei; - - ei = l->data; if ((ei->normalized_exe) && (!strcmp(normal, ei->normalized_exe))) count++; } @@ -175,17 +172,15 @@ e_exehist_newest_run_get(const char *exe) { Eina_List *l; + E_Exehist_Item *ei; const char *normal; _e_exehist_load(); if (!_e_exehist) return 0.0; normal = _e_exehist_normalize_exe(exe); if (!normal) return 0.0; - for (l = eina_list_last(_e_exehist->history); l; l = l->prev) + EINA_LIST_REVERSE_FOREACH(_e_exehist->history, l, ei) { - E_Exehist_Item *ei; - - ei = l->data; if ((ei->normalized_exe) && (!strcmp(normal, ei->normalized_exe))) { eina_stringshare_del(normal); @@ -244,11 +239,10 @@ } else { - for (m = list; m; m = m->next) + const char *exe; + EINA_LIST_FOREACH(list, m, exe) { - const char *exe; - - if (!(exe = m->data)) continue; + if (!exe) continue; if (!strcmp(exe, ei->exe)) { bad = 1; @@ -295,9 +289,8 @@ f = efreet_util_path_to_file_id(desktop->orig_path); if (!f) return; - for (l = _e_exehist->mimes; l; l = l->next) + EINA_LIST_FOREACH(_e_exehist->mimes, l, ei) { - ei = l->data; if ((ei->launch_method) && (!strcmp(mime, ei->launch_method))) { if ((ei->exe) && (!strcmp(f, ei->exe))) @@ -338,9 +331,8 @@ if (!mime) return NULL; _e_exehist_load(); if (!_e_exehist) return NULL; - for (l = _e_exehist->mimes; l; l = l->next) + EINA_LIST_FOREACH(_e_exehist->mimes, l, ei) { - ei = l->data; if ((ei->launch_method) && (!strcmp(mime, ei->launch_method))) { desktop = NULL; @@ -380,26 +372,19 @@ { if (_e_exehist) { - while (_e_exehist->history) + E_Exehist_Item *ei; + EINA_LIST_FREE(_e_exehist->history, ei) { - E_Exehist_Item *ei; - - ei = _e_exehist->history->data; eina_stringshare_del(ei->exe); eina_stringshare_del(ei->normalized_exe); eina_stringshare_del(ei->launch_method); free(ei); - _e_exehist->history = eina_list_remove_list(_e_exehist->history, _e_exehist->history); } - while (_e_exehist->mimes) + EINA_LIST_FREE(_e_exehist->mimes, ei) { - E_Exehist_Item *ei; - - ei = _e_exehist->mimes->data; eina_stringshare_del(ei->exe); eina_stringshare_del(ei->launch_method); free(ei); - _e_exehist->mimes = eina_list_remove_list(_e_exehist->mimes, _e_exehist->mimes); } } } @@ -425,7 +410,7 @@ { E_Exehist_Item *ei; - ei = _e_exehist->history->data; + ei... [truncated message content] |
From: Enlightenment S. <no-...@en...> - 2009-08-24 09:18:05
|
Log: * e_gadcon.c: Fix Gadcon unpopulate. Thanks to Sachiel. Author: cedric Date: 2009-08-24 02:17:54 -0700 (Mon, 24 Aug 2009) New Revision: 41950 Modified: trunk/e/src/bin/e_gadcon.c Modified: trunk/e/src/bin/e_gadcon.c =================================================================== --- trunk/e/src/bin/e_gadcon.c 2009-08-24 09:02:13 UTC (rev 41949) +++ trunk/e/src/bin/e_gadcon.c 2009-08-24 09:17:54 UTC (rev 41950) @@ -458,9 +458,11 @@ E_OBJECT_CHECK(gc); E_OBJECT_TYPE_CHECK(gc, E_GADCON_TYPE); - EINA_LIST_FREE(gc->clients, gcc) + /* Be carefull, e_object_del does remove gcc from gc->clients */ + while (gc->clients) { - if (gcc->menu) + gcc = eina_list_data_get(gc->clients); + if (gcc->menu) { e_menu_post_deactivate_callback_set(gcc->menu, NULL, NULL); e_object_del(E_OBJECT(gcc->menu)); |
From: Enlightenment S. <no-...@en...> - 2009-09-03 12:06:01
|
Log: * e: Use new and cleaner eet API. Note: The situation regarding string from config file could be improved. We could use the same trick as Edje and directly map the string from Eet config file. This will improve memory used by E, if string from config file are used a lot. So the question is : "Do we save a lot of string in config file ?" Author: cedric Date: 2009-09-03 05:05:49 -0700 (Thu, 03 Sep 2009) New Revision: 42201 Modified: trunk/e/src/bin/e_config_data.c trunk/e/src/bin/e_config_data.h trunk/e/src/bin/e_fm_custom.c trunk/e/src/bin/e_fm_shared.h trunk/e/src/bin/e_ipc_codec.c Modified: trunk/e/src/bin/e_config_data.c =================================================================== --- trunk/e/src/bin/e_config_data.c 2009-09-03 01:39:45 UTC (rev 42200) +++ trunk/e/src/bin/e_config_data.c 2009-09-03 12:05:49 UTC (rev 42201) @@ -7,23 +7,15 @@ e_config_descriptor_new(const char *name, int size) { Eet_Data_Descriptor_Class eddc; - - eddc.version = EET_DATA_DESCRIPTOR_CLASS_VERSION; - eddc.func.mem_alloc = NULL; - eddc.func.mem_free = NULL; - eddc.func.str_alloc = (char *(*)(const char *)) eina_stringshare_add; - eddc.func.str_free = (void (*)(const char *)) eina_stringshare_del; - eddc.func.list_next = (void *(*)(void *)) eina_list_next; - eddc.func.list_append = (void *(*)(void *l, void *d)) eina_list_append; - eddc.func.list_data = (void *(*)(void *)) eina_list_data_get; - eddc.func.list_free = (void *(*)(void *)) eina_list_free; - eddc.func.hash_foreach = - (void (*) (const Eina_Hash *, Eina_Bool (*) (const Eina_Hash *, const void *, void *, void *), const void *)) - eina_hash_foreach; - eddc.func.hash_add = (Eina_Hash* (*) (Eina_Hash *, const void *, void *)) eet_eina_hash_add_alloc; - eddc.func.hash_free = (void (*) (Eina_Hash *)) eina_hash_free; - eddc.name = name; - eddc.size = size; - return (E_Config_DD *)eet_data_descriptor2_new(&eddc); + + if (!eet_eina_file_data_descriptor_class_set(&eddc, name, size)) + return NULL; + + /* FIXME: We can directly map string inside an Eet_File as we + need to change every config destructor in E for that. */ + eddc.func.str_direct_alloc = NULL; + eddc.func.str_direct_free = NULL; + + return (E_Config_DD *) eet_data_descriptor_file_new(&eddc); } Modified: trunk/e/src/bin/e_config_data.h =================================================================== --- trunk/e/src/bin/e_config_data.h 2009-09-03 01:39:45 UTC (rev 42200) +++ trunk/e/src/bin/e_config_data.h 2009-09-03 12:05:49 UTC (rev 42201) @@ -29,15 +29,6 @@ #ifndef E_CONFIG_DATA_H #define E_CONFIG_DATA_H -static inline Eina_Hash * -eet_eina_hash_add_alloc(Eina_Hash *hash, const void *key, void *data) -{ - if (!hash) hash = eina_hash_string_superfast_new(NULL); - if (!hash) return NULL; - eina_hash_add(hash, key, data); - return hash; -} - EAPI E_Config_DD *e_config_descriptor_new(const char *name, int size); #endif Modified: trunk/e/src/bin/e_fm_custom.c =================================================================== --- trunk/e/src/bin/e_fm_custom.c 2009-09-03 01:39:45 UTC (rev 42200) +++ trunk/e/src/bin/e_fm_custom.c 2009-09-03 12:05:49 UTC (rev 42201) @@ -37,26 +37,15 @@ _e_fm2_custom_init++; if (_e_fm2_custom_init > 1) return _e_fm2_custom_init; + if (!eet_eina_stream_data_descriptor_class_set(&eddc, "e_fm2_custom_dir", sizeof (E_Fm2_Custom_Dir))) + { + _e_fm2_custom_init--; + return 0; + } + _e_fm2_custom_hash = eina_hash_string_superfast_new(NULL); - eddc.version = EET_DATA_DESCRIPTOR_CLASS_VERSION; - eddc.func.mem_alloc = NULL; - eddc.func.mem_free = NULL; - eddc.func.str_alloc = (char *(*)(const char *)) eina_stringshare_add; - eddc.func.str_free = (void (*)(const char *)) eina_stringshare_del; - eddc.func.list_next = (void *(*)(void *)) eina_list_next; - eddc.func.list_append = (void *(*)(void *l, void *d)) eina_list_append; - eddc.func.list_data = (void *(*)(void *)) eina_list_data_get; - eddc.func.list_free = (void *(*)(void *)) eina_list_free; - eddc.func.hash_foreach = - (void (*) (void *, int (*) (void *, const char *, void *, void *), void *)) - eina_hash_foreach; - eddc.func.hash_add = (void* (*) (void *, const char *, void *)) eet_eina_hash_add_alloc; - eddc.func.hash_free = (void (*) (void *)) eina_hash_free; - eddc.name = "e_fm_custom_file"; - eddc.size = sizeof(E_Fm2_Custom_File); - - _e_fm2_custom_dir_edd = eet_data_descriptor2_new(&eddc); + _e_fm2_custom_dir_edd = eet_data_descriptor_stream_new(&eddc); #define DAT(x, y, z) EET_DATA_DESCRIPTOR_ADD_BASIC(_e_fm2_custom_dir_edd, E_Fm2_Custom_Dir, x, y, z) DAT("pos.x", pos.x, EET_T_DOUBLE); DAT("pos.y", pos.y, EET_T_DOUBLE); @@ -67,7 +56,10 @@ DAT("prop.in_use", prop.in_use, EET_T_UCHAR); #undef DAT - _e_fm2_custom_file_edd = eet_data_descriptor2_new(&eddc); + eddc.size = sizeof (E_Fm2_Custom_File); + eddc.name = "e_fm_custom_file"; + + _e_fm2_custom_file_edd = eet_data_descriptor_stream_new(&eddc); #define DAT(x, y, z) EET_DATA_DESCRIPTOR_ADD_BASIC(_e_fm2_custom_file_edd, E_Fm2_Custom_File, x, y, z) DAT("g.x", geom.x, EET_T_INT); DAT("g.y", geom.y, EET_T_INT); Modified: trunk/e/src/bin/e_fm_shared.h =================================================================== --- trunk/e/src/bin/e_fm_shared.h 2009-09-03 01:39:45 UTC (rev 42200) +++ trunk/e/src/bin/e_fm_shared.h 2009-09-03 12:05:49 UTC (rev 42201) @@ -123,23 +123,10 @@ Eet_Data_Descriptor *edd; Eet_Data_Descriptor_Class eddc; - eddc.version = EET_DATA_DESCRIPTOR_CLASS_VERSION; - eddc.func.mem_alloc = NULL; - eddc.func.mem_free = NULL; - eddc.func.str_alloc = (char *(*)(const char *)) strdup; - eddc.func.str_free = (void (*)(const char *)) free; - eddc.func.list_next = (void *(*)(void *)) eina_list_next; - eddc.func.list_append = (void *(*)(void *l, void *d)) eina_list_append; - eddc.func.list_data = (void *(*)(void *)) eina_list_data_get; - eddc.func.hash_foreach = - (void (*) (void *, int (*) (void *, const char *, void *, void *), void *)) - eina_hash_foreach; - eddc.func.hash_add = (void* (*) (void *, const char *, void *)) eet_eina_hash_add_alloc; - eddc.func.hash_free = (void (*) (void *)) eina_hash_free; - eddc.name = "e_volume"; - eddc.size = sizeof(E_Volume); + if (!eet_eina_stream_data_descriptor_class_set(&eddc, "e_volume", sizeof (E_Volume))) + return NULL; - edd = eet_data_descriptor2_new(&eddc); + edd = eet_data_descriptor_stream_new(&eddc); #define DAT(x, y, z) EET_DATA_DESCRIPTOR_ADD_BASIC(edd, E_Volume, x, y, z) DAT("type", type, EET_T_INT); DAT("udi", udi, EET_T_STRING); @@ -164,23 +151,10 @@ Eet_Data_Descriptor *edd; Eet_Data_Descriptor_Class eddc; - eddc.version = EET_DATA_DESCRIPTOR_CLASS_VERSION; - eddc.func.mem_alloc = NULL; - eddc.func.mem_free = NULL; - eddc.func.str_alloc = (char *(*)(const char *)) strdup; - eddc.func.str_free = (void (*)(const char *)) free; - eddc.func.list_next = (void *(*)(void *)) eina_list_next; - eddc.func.list_append = (void *(*)(void *l, void *d)) eina_list_append; - eddc.func.list_data = (void *(*)(void *)) eina_list_data_get; - eddc.func.hash_foreach = - (void (*) (void *, int (*) (void *, const char *, void *, void *), void *)) - eina_hash_foreach; - eddc.func.hash_add = (void* (*) (void *, const char *, void *)) eet_eina_hash_add_alloc; - eddc.func.hash_free = (void (*) (Eina_Hash *)) eina_hash_free; - eddc.name = "e_storage"; - eddc.size = sizeof(E_Storage); + if (!eet_eina_stream_data_descriptor_class_set(&eddc, "e_storage", sizeof (E_Storage))) + return NULL; - edd = eet_data_descriptor2_new(&eddc); + edd = eet_data_descriptor_stream_new(&eddc); #define DAT(x, y, z) EET_DATA_DESCRIPTOR_ADD_BASIC(edd, E_Storage, x, y, z) DAT("type", type, EET_T_INT); DAT("udi", udi, EET_T_STRING); Modified: trunk/e/src/bin/e_ipc_codec.c =================================================================== --- trunk/e/src/bin/e_ipc_codec.c 2009-09-03 01:39:45 UTC (rev 42200) +++ trunk/e/src/bin/e_ipc_codec.c 2009-09-03 12:05:49 UTC (rev 42201) @@ -28,71 +28,58 @@ static Eet_Data_Descriptor *_e_ipc_str_4int_edd = NULL; static Eet_Data_Descriptor *_e_ipc_str_4int_list_edd = NULL; -static void * -_e_ipc_codec_eina_hash_add(void *hash, const void *key, void *data) -{ - Eina_Hash *result = hash; +#define E_IPC_DD(Edd, Eddc, Name, Type) \ + Eddc.name = Name; \ + Eddc.size = sizeof (Type); \ + Edd = eet_data_descriptor_stream_new(&Eddc); - if (!result) result = eina_hash_string_superfast_new(NULL); - if (!result) return NULL; - - eina_hash_add(result, key, data); - return result; -} - -#define E_IPC_DD_NEW(str, typ) \ - eet_data_descriptor_new(str, sizeof(typ), \ - (void *(*) (void *))eina_list_next, \ - (void *(*) (void *, void *))eina_list_append, \ - (void *(*) (void *))eina_list_data_get, \ - (void *(*) (void *))eina_list_free, \ - (void (*) (void *, int (*) (void *, const char *, void *, void *), void *))eina_hash_foreach, \ - (void *(*) (void *, const char *, void *))_e_ipc_codec_eina_hash_add, \ - (void (*) (void *))eina_hash_free) - /* externally accessible functions */ EAPI int e_ipc_codec_init(void) { - _e_ipc_int_edd = E_IPC_DD_NEW("int", E_Ipc_Int); + Eet_Data_Descriptor_Class eddc; + + if (!eet_eina_stream_data_descriptor_class_set(&eddc, "int", sizeof (E_Ipc_Int))) + return 0; + _e_ipc_int_edd = eet_data_descriptor_stream_new(&eddc); E_CONFIG_VAL(_e_ipc_int_edd, E_Ipc_Int, val, INT); - _e_ipc_double_edd = E_IPC_DD_NEW("double", E_Ipc_Double); + E_IPC_DD(_e_ipc_double_edd, eddc, "double", E_Ipc_Double); E_CONFIG_VAL(_e_ipc_double_edd, E_Ipc_Double, val, DOUBLE); - - _e_ipc_2int_edd = E_IPC_DD_NEW("2int", E_Ipc_2Int); + + E_IPC_DD(_e_ipc_2int_edd, eddc, "2int", E_Ipc_2Int); E_CONFIG_VAL(_e_ipc_2int_edd, E_Ipc_2Int, val1, INT); E_CONFIG_VAL(_e_ipc_2int_edd, E_Ipc_2Int, val2, INT); - _e_ipc_str_edd = E_IPC_DD_NEW("str", E_Ipc_Str); + E_IPC_DD(_e_ipc_str_edd, eddc, "str", E_Ipc_Str); E_CONFIG_VAL(_e_ipc_str_edd, E_Ipc_Str, str, STR); - _e_ipc_str_list_edd = E_IPC_DD_NEW("str_list", E_Ipc_List); + E_IPC_DD(_e_ipc_str_list_edd, eddc, "str_list", E_Ipc_List); E_CONFIG_LIST(_e_ipc_str_list_edd, E_Ipc_List, list, _e_ipc_str_edd); - _e_ipc_2str_edd = E_IPC_DD_NEW("2str", E_Ipc_2Str); + E_IPC_DD(_e_ipc_2str_edd, eddc, "2str", E_Ipc_2Str); E_CONFIG_VAL(_e_ipc_2str_edd, E_Ipc_2Str, str1, STR); E_CONFIG_VAL(_e_ipc_2str_edd, E_Ipc_2Str, str2, STR); - - _e_ipc_2str_list_edd = E_IPC_DD_NEW("2str_list", E_Ipc_List); + + E_IPC_DD(_e_ipc_2str_list_edd, eddc, "2str_list", E_Ipc_List); E_CONFIG_LIST(_e_ipc_2str_list_edd, E_Ipc_List, list, _e_ipc_2str_edd); - _e_ipc_str_int_edd = E_IPC_DD_NEW("str_int", E_Ipc_Str_Int); + E_IPC_DD(_e_ipc_str_int_edd, eddc, "str_int", E_Ipc_Str_Int); E_CONFIG_VAL(_e_ipc_str_int_edd, E_Ipc_Str_Int, str, STR); E_CONFIG_VAL(_e_ipc_str_int_edd, E_Ipc_Str_Int, val, INT); - - _e_ipc_str_int_list_edd = E_IPC_DD_NEW("str_int_list", E_Ipc_List); + + E_IPC_DD(_e_ipc_str_int_list_edd, eddc, "str_int_list", E_Ipc_List); E_CONFIG_LIST(_e_ipc_str_int_list_edd, E_Ipc_List, list, _e_ipc_str_int_edd); - _e_ipc_2str_int_edd = E_IPC_DD_NEW("2str_int", E_Ipc_2Str_Int); + E_IPC_DD(_e_ipc_2str_int_edd, eddc, "2str_int", E_Ipc_2Str_Int); E_CONFIG_VAL(_e_ipc_2str_int_edd, E_Ipc_2Str_Int, str1, STR); E_CONFIG_VAL(_e_ipc_2str_int_edd, E_Ipc_2Str_Int, str2, STR); E_CONFIG_VAL(_e_ipc_2str_int_edd, E_Ipc_2Str_Int, val, INT); - - _e_ipc_2str_int_list_edd = E_IPC_DD_NEW("2str_int_list", E_Ipc_List); + + E_IPC_DD(_e_ipc_2str_int_list_edd, eddc, "2str_int_list", E_Ipc_List); E_CONFIG_LIST(_e_ipc_2str_int_list_edd, E_Ipc_List, list, _e_ipc_2str_int_edd); - - _e_ipc_4int_2str_edd = E_IPC_DD_NEW("4int_2str", E_Ipc_4Int_2Str); + + E_IPC_DD(_e_ipc_4int_2str_edd, eddc, "4int_2str", E_Ipc_4Int_2Str); E_CONFIG_VAL(_e_ipc_4int_2str_edd, E_Ipc_4Int_2Str, val1, INT); E_CONFIG_VAL(_e_ipc_4int_2str_edd, E_Ipc_4Int_2Str, val2, INT); E_CONFIG_VAL(_e_ipc_4int_2str_edd, E_Ipc_4Int_2Str, val3, INT); @@ -100,10 +87,10 @@ E_CONFIG_VAL(_e_ipc_4int_2str_edd, E_Ipc_4Int_2Str, str1, STR); E_CONFIG_VAL(_e_ipc_4int_2str_edd, E_Ipc_4Int_2Str, str2, STR); - _e_ipc_4int_2str_list_edd = E_IPC_DD_NEW("4int_2str_list", E_Ipc_List); + E_IPC_DD(_e_ipc_4int_2str_list_edd, eddc, "4int_2str_list", E_Ipc_List); E_CONFIG_LIST(_e_ipc_4int_2str_list_edd, E_Ipc_List, list, _e_ipc_4int_2str_edd); - _e_ipc_5int_2str_edd = E_IPC_DD_NEW("5int_2str", E_Ipc_5Int_2Str); + E_IPC_DD(_e_ipc_5int_2str_edd, eddc, "5int_2str", E_Ipc_5Int_2Str); E_CONFIG_VAL(_e_ipc_5int_2str_edd, E_Ipc_5Int_2Str, val1, INT); E_CONFIG_VAL(_e_ipc_5int_2str_edd, E_Ipc_5Int_2Str, val2, INT); E_CONFIG_VAL(_e_ipc_5int_2str_edd, E_Ipc_5Int_2Str, val3, INT); @@ -112,10 +99,10 @@ E_CONFIG_VAL(_e_ipc_5int_2str_edd, E_Ipc_5Int_2Str, str1, STR); E_CONFIG_VAL(_e_ipc_5int_2str_edd, E_Ipc_5Int_2Str, str2, STR); - _e_ipc_5int_2str_list_edd = E_IPC_DD_NEW("5int_2str_list", E_Ipc_List); + E_IPC_DD(_e_ipc_5int_2str_list_edd, eddc, "5int_2str_list", E_Ipc_List); E_CONFIG_LIST(_e_ipc_5int_2str_list_edd, E_Ipc_List, list, _e_ipc_5int_2str_edd); - _e_ipc_3int_4str_edd = E_IPC_DD_NEW("3int_4str", E_Ipc_3Int_4Str); + E_IPC_DD(_e_ipc_3int_4str_edd, eddc, "3int_4str", E_Ipc_3Int_4Str); E_CONFIG_VAL(_e_ipc_3int_4str_edd, E_Ipc_3Int_4Str, val1, INT); E_CONFIG_VAL(_e_ipc_3int_4str_edd, E_Ipc_3Int_4Str, val2, INT); E_CONFIG_VAL(_e_ipc_3int_4str_edd, E_Ipc_3Int_4Str, val3, INT); @@ -124,10 +111,10 @@ E_CONFIG_VAL(_e_ipc_3int_4str_edd, E_Ipc_3Int_4Str, str3, STR); E_CONFIG_VAL(_e_ipc_3int_4str_edd, E_Ipc_3Int_4Str, str4, STR); - _e_ipc_3int_4str_list_edd = E_IPC_DD_NEW("3int_4str_list", E_Ipc_List); + E_IPC_DD(_e_ipc_3int_4str_list_edd, eddc, "3int_4str_list", E_Ipc_List); E_CONFIG_LIST(_e_ipc_3int_4str_list_edd, E_Ipc_List, list, _e_ipc_3int_4str_edd); - _e_ipc_3int_3str_edd = E_IPC_DD_NEW("3int_3str", E_Ipc_3Int_3Str); + E_IPC_DD(_e_ipc_3int_3str_edd, eddc, "3int_3str", E_Ipc_3Int_3Str); E_CONFIG_VAL(_e_ipc_3int_3str_edd, E_Ipc_3Int_3Str, val1, INT); E_CONFIG_VAL(_e_ipc_3int_3str_edd, E_Ipc_3Int_3Str, val2, INT); E_CONFIG_VAL(_e_ipc_3int_3str_edd, E_Ipc_3Int_3Str, val3, INT); @@ -135,17 +122,17 @@ E_CONFIG_VAL(_e_ipc_3int_3str_edd, E_Ipc_3Int_3Str, str2, STR); E_CONFIG_VAL(_e_ipc_3int_3str_edd, E_Ipc_3Int_3Str, str3, STR); - _e_ipc_3int_3str_list_edd = E_IPC_DD_NEW("3int_3str_list", E_Ipc_List); + E_IPC_DD(_e_ipc_3int_3str_list_edd, eddc, "3int_3str_list", E_Ipc_List); E_CONFIG_LIST(_e_ipc_3int_3str_list_edd, E_Ipc_List, list, _e_ipc_3int_3str_edd); - _e_ipc_str_4int_edd = E_IPC_DD_NEW("str_4int", E_Ipc_Str_4Int); + E_IPC_DD(_e_ipc_str_4int_edd, eddc, "str_4int", E_Ipc_Str_4Int); E_CONFIG_VAL(_e_ipc_str_4int_edd, E_Ipc_Str_4Int, str, STR); E_CONFIG_VAL(_e_ipc_str_4int_edd, E_Ipc_Str_4Int, val1, INT); E_CONFIG_VAL(_e_ipc_str_4int_edd, E_Ipc_Str_4Int, val2, INT); E_CONFIG_VAL(_e_ipc_str_4int_edd, E_Ipc_Str_4Int, val3, INT); E_CONFIG_VAL(_e_ipc_str_4int_edd, E_Ipc_Str_4Int, val4, INT); - _e_ipc_str_4int_list_edd = E_IPC_DD_NEW("str_4int_list", E_Ipc_List); + E_IPC_DD(_e_ipc_str_4int_list_edd, eddc, "str_4int_list", E_Ipc_List); E_CONFIG_LIST(_e_ipc_str_4int_list_edd, E_Ipc_List, list, _e_ipc_str_4int_edd); return 1; |
From: Enlightenment S. <no-...@en...> - 2009-09-03 14:48:56
|
Log: * e_fm_shared.h: Proper fix with new API. Author: cedric Date: 2009-09-03 07:48:46 -0700 (Thu, 03 Sep 2009) New Revision: 42209 Modified: trunk/e/src/bin/e_fm_shared.h Modified: trunk/e/src/bin/e_fm_shared.h =================================================================== --- trunk/e/src/bin/e_fm_shared.h 2009-09-03 14:38:54 UTC (rev 42208) +++ trunk/e/src/bin/e_fm_shared.h 2009-09-03 14:48:46 UTC (rev 42209) @@ -117,38 +117,19 @@ free(s); } -static inline Eina_Hash * -eet_eina_hash_add_alloc(Eina_Hash *hash, const void *key, void *data) -{ - if (!hash) hash = eina_hash_string_superfast_new(NULL); - if (!hash) return NULL; - eina_hash_add(hash, key, data); - return hash; -} - static Eet_Data_Descriptor * _e_volume_edd_new(void) { Eet_Data_Descriptor *edd; Eet_Data_Descriptor_Class eddc; - eddc.version = EET_DATA_DESCRIPTOR_CLASS_VERSION; - eddc.func.mem_alloc = NULL; - eddc.func.mem_free = NULL; + if (!eet_eina_stream_data_descriptor_class_set(&eddc, "e_volume", sizeof (E_Volume))) + return NULL; + eddc.func.str_alloc = (char *(*)(const char *)) strdup; eddc.func.str_free = (void (*)(const char *)) free; - eddc.func.list_next = (void *(*)(void *)) eina_list_next; - eddc.func.list_append = (void *(*)(void *l, void *d)) eina_list_append; - eddc.func.list_data = (void *(*)(void *)) eina_list_data_get; - eddc.func.hash_foreach = - (void (*) (void *, int (*) (void *, const char *, void *, void *), void *)) - eina_hash_foreach; - eddc.func.hash_add = (void* (*) (void *, const char *, void *)) eet_eina_hash_add_alloc; - eddc.func.hash_free = (void (*) (void *)) eina_hash_free; - eddc.name = "e_volume"; - eddc.size = sizeof(E_Volume); - edd = eet_data_descriptor2_new(&eddc); + edd = eet_data_descriptor_stream_new(&eddc); #define DAT(x, y, z) EET_DATA_DESCRIPTOR_ADD_BASIC(edd, E_Volume, x, y, z) DAT("type", type, EET_T_INT); DAT("udi", udi, EET_T_STRING); @@ -173,23 +154,13 @@ Eet_Data_Descriptor *edd; Eet_Data_Descriptor_Class eddc; - eddc.version = EET_DATA_DESCRIPTOR_CLASS_VERSION; - eddc.func.mem_alloc = NULL; - eddc.func.mem_free = NULL; + if (!eet_eina_stream_data_descriptor_class_set(&eddc, "e_storage", sizeof (E_Storage))) + return NULL; + eddc.func.str_alloc = (char *(*)(const char *)) strdup; eddc.func.str_free = (void (*)(const char *)) free; - eddc.func.list_next = (void *(*)(void *)) eina_list_next; - eddc.func.list_append = (void *(*)(void *l, void *d)) eina_list_append; - eddc.func.list_data = (void *(*)(void *)) eina_list_data_get; - eddc.func.hash_foreach = - (void (*) (void *, int (*) (void *, const char *, void *, void *), void *)) - eina_hash_foreach; - eddc.func.hash_add = (void* (*) (void *, const char *, void *)) eet_eina_hash_add_alloc; - eddc.func.hash_free = (void (*) (Eina_Hash *)) eina_hash_free; - eddc.name = "e_storage"; - eddc.size = sizeof(E_Storage); - edd = eet_data_descriptor2_new(&eddc); + edd = eet_data_descriptor_stream_new(&eddc); #define DAT(x, y, z) EET_DATA_DESCRIPTOR_ADD_BASIC(edd, E_Storage, x, y, z) DAT("type", type, EET_T_INT); DAT("udi", udi, EET_T_STRING); |
From: Enlightenment S. <no-...@en...> - 2010-03-18 15:02:18
|
Log: * e: remove some historic comment. NOTE: I did some test and wasn't able to trigger the documented segv. If you get a segv on exit, please report and help me to understand how to trigger it. Anyway, I reactived it so that we can get global memory consuption statistic with e17. Author: cedric Date: 2010-03-18 08:02:10 -0700 (Thu, 18 Mar 2010) New Revision: 47322 Modified: trunk/e/src/bin/e_main.c Modified: trunk/e/src/bin/e_main.c =================================================================== --- trunk/e/src/bin/e_main.c 2010-03-18 14:57:56 UTC (rev 47321) +++ trunk/e/src/bin/e_main.c 2010-03-18 15:02:10 UTC (rev 47322) @@ -393,8 +393,8 @@ ecore_imf_init(); _e_main_shutdown_push(ecore_imf_shutdown); #endif -// FIXME: SEGV's on shutdown if fm2 windows up - disable for now. -// _e_main_shutdown_push(ecore_shutdown); +// FIXME: SEGV's on shutdown if fm2 windows up - disable for now. => is it history ? + _e_main_shutdown_push(ecore_shutdown); /* init edje and set it up in frozen mode */ edje_init(); |
From: Enlightenment S. <no-...@en...> - 2010-03-25 17:34:00
|
Log: * e: handle mouse wheel for slider. Author: cedric Date: 2010-03-25 10:33:54 -0700 (Thu, 25 Mar 2010) New Revision: 47452 Modified: trunk/e/src/bin/e_slider.c Modified: trunk/e/src/bin/e_slider.c =================================================================== --- trunk/e/src/bin/e_slider.c 2010-03-25 17:30:59 UTC (rev 47451) +++ trunk/e/src/bin/e_slider.c 2010-03-25 17:33:54 UTC (rev 47452) @@ -387,6 +387,24 @@ } static void +_e_smart_signal_cb_wheel_up(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__) +{ + E_Smart_Data *sd = data; + + edje_object_part_drag_step(sd->edje_obj, "e.dragable.slider", -0.05, -0.05); + sd->direction = -1; +} + +static void +_e_smart_signal_cb_wheel_down(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__) +{ + E_Smart_Data *sd = data; + + edje_object_part_drag_step(sd->edje_obj, "e.dragable.slider", 0.05, 0.05); + sd->direction = 1; +} + +static void _e_smart_event_key_down(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info) { Evas_Event_Key_Down *ev = event_info; @@ -478,6 +496,8 @@ edje_object_signal_callback_add(sd->edje_obj, "drag,stop", "*", _e_smart_signal_cb_drag_stop, sd); edje_object_signal_callback_add(sd->edje_obj, "drag,step", "*", _e_smart_signal_cb_drag_stop, sd); edje_object_signal_callback_add(sd->edje_obj, "drag,set", "*", _e_smart_signal_cb_drag_stop, sd); + edje_object_signal_callback_add(sd->edje_obj, "mouse,wheel,0,1", "*", _e_smart_signal_cb_wheel_up, sd); + edje_object_signal_callback_add(sd->edje_obj, "mouse,wheel,0,-1", "*", _e_smart_signal_cb_wheel_down, sd); evas_object_event_callback_add(obj, EVAS_CALLBACK_KEY_DOWN, _e_smart_event_key_down, sd); } |
From: Enlightenment S. <no-...@en...> - 2010-03-29 16:11:14
|
Log: * e: prevent segv when reinserting the same object. Should never happen but better to not segv. Author: cedric Date: 2010-03-29 09:11:08 -0700 (Mon, 29 Mar 2010) New Revision: 47558 Modified: trunk/e/src/bin/e_gadcon_popup.c Modified: trunk/e/src/bin/e_gadcon_popup.c =================================================================== --- trunk/e/src/bin/e_gadcon_popup.c 2010-03-29 15:54:34 UTC (rev 47557) +++ trunk/e/src/bin/e_gadcon_popup.c 2010-03-29 16:11:08 UTC (rev 47558) @@ -49,14 +49,17 @@ E_OBJECT_TYPE_CHECK(pop, E_GADCON_POPUP_TYPE); old_o = edje_object_part_swallow_get(pop->o_bg, "e.swallow.content"); - if (old_o) + if (old_o != o) { - edje_object_part_unswallow(pop->o_bg, old_o); - evas_object_del(old_o); + if (old_o) + { + edje_object_part_unswallow(pop->o_bg, old_o); + evas_object_del(old_o); + } + edje_object_part_swallow(pop->o_bg, "e.swallow.content", o); + evas_object_event_callback_add(o, EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _e_gadcon_popup_changed_size_hints_cb, pop); } - edje_object_part_swallow(pop->o_bg, "e.swallow.content", o); - evas_object_event_callback_add(o, EVAS_CALLBACK_CHANGED_SIZE_HINTS, - _e_gadcon_popup_changed_size_hints_cb, pop); _e_gadcon_popup_size_recalc(pop, o); } |
From: Enlightenment S. <no-...@en...> - 2010-03-30 15:13:57
|
Log: * e: handle more valgrind tool to monitore e17. Author: cedric Date: 2010-03-30 08:13:45 -0700 (Tue, 30 Mar 2010) New Revision: 47600 Modified: trunk/e/src/bin/e_start_main.c Modified: trunk/e/src/bin/e_start_main.c =================================================================== --- trunk/e/src/bin/e_start_main.c 2010-03-30 13:32:44 UTC (rev 47599) +++ trunk/e/src/bin/e_start_main.c 2010-03-30 15:13:45 UTC (rev 47600) @@ -359,10 +359,23 @@ #define VALGRIND_MODE_ALL 15 static int -valgrind_append(char **dst, int valgrind_mode, char *valgrind_path, const char *valgrind_log) +valgrind_append(char **dst, int valgrind_mode, int valgrind_tool, char *valgrind_path, const char *valgrind_log) { int i = 0; + if (valgrind_tool) + { + dst[i++] = valgrind_path; + + switch (valgrind_tool) + { + case 1: dst[i++] = "--tool=massif"; break; + case 2: dst[i++] = "--tool=callgrind"; break; + } + + return i; + } + if (!valgrind_mode) return 0; dst[i++] = valgrind_path; @@ -404,6 +417,7 @@ main(int argc, char **argv) { int i, do_precache = 0, valgrind_mode = 0; + int valgrind_tool = 0; char buf[16384], **args, *p; char valgrind_path[PATH_MAX] = ""; const char *valgrind_log = NULL; @@ -452,6 +466,14 @@ else printf("Unknown valgrind option: %s\n", argv[i]); } + else if (!strcmp(argv[i], "-massif")) + { + valgrind_tool = 1; + } + else if (!strcmp(argv[i], "-callgrind")) + { + valgrind_tool = 2; + } else if ((!strcmp(argv[i], "-h")) || (!strcmp(argv[i], "-help")) || (!strcmp(argv[i], "--help"))) @@ -467,6 +489,10 @@ "\t\t 4 = check leak\n" "\t\t 8 = show reachable after processes finish.\n" "\t\t all = all of above\n" + "\t-massif\n" + "\t\tRun enlightenment from inside massif valgrind tool.\n" + "\t-callgrind\n" + "\t\tRun enlightenment from inside callgrind valgrind tool.\n" "\t-valgrind-log-file=<FILENAME>\n" "\t\tSave valgrind log to file, see valgrind's --log-file for details.\n" "\n" @@ -478,7 +504,7 @@ } } - if (valgrind_mode) + if (valgrind_mode || valgrind_tool) { if (!find_valgrind(valgrind_path, sizeof(valgrind_path))) { @@ -535,7 +561,7 @@ args[0] = "dbus-launch"; args[1] = "--exit-with-session"; - i = 2 + valgrind_append(args + 2, valgrind_mode, valgrind_path, valgrind_log); + i = 2 + valgrind_append(args + 2, valgrind_mode, valgrind_tool, valgrind_path, valgrind_log); args[i++] = buf; copy_args(args + i, argv + 1, argc - 1); args[i + argc - 1] = NULL; @@ -543,7 +569,7 @@ } /* dbus-launch failed - run e direct */ - i = valgrind_append(args, valgrind_mode, valgrind_path, valgrind_log); + i = valgrind_append(args, valgrind_mode, valgrind_tool, valgrind_path, valgrind_log); args[i++] = buf; copy_args(args + i, argv + 1, argc - 1); args[i + argc - 1] = NULL; |
From: Enlightenment S. <no-...@en...> - 2010-04-07 13:54:41
|
Log: * e: Config in E17 could take avantage off Eet mapped string, but right now the API doesn't provide a way to let the Eet_File open. So don't hack around Eet API and use the proper API. TODO: Break E_Config API to hold a reference to the Eet_File as long as needed. Author: cedric Date: 2010-04-07 06:54:33 -0700 (Wed, 07 Apr 2010) New Revision: 47805 Modified: trunk/e/src/bin/e_config_data.c Modified: trunk/e/src/bin/e_config_data.c =================================================================== --- trunk/e/src/bin/e_config_data.c 2010-04-07 11:29:27 UTC (rev 47804) +++ trunk/e/src/bin/e_config_data.c 2010-04-07 13:54:33 UTC (rev 47805) @@ -8,14 +8,13 @@ { Eet_Data_Descriptor_Class eddc; - if (!eet_eina_file_data_descriptor_class_set(&eddc, name, size)) + if (!eet_eina_stream_data_descriptor_class_set(&eddc, name, size)) return NULL; - /* FIXME: We can directly map string inside an Eet_File as we - need to change every config destructor in E for that. */ - eddc.func.str_direct_alloc = NULL; - eddc.func.str_direct_free = NULL; + /* FIXME: We can directly map string inside an Eet_File and reuse it. + But this need a break in all user of config every where in E. + */ - return (E_Config_DD *) eet_data_descriptor_file_new(&eddc); + return (E_Config_DD *) eet_data_descriptor_stream_new(&eddc); } |
From: Enlightenment S. <no-...@en...> - 2010-07-01 16:05:27
|
Log: * e: remove gradient used by e_color_dialog. NOTE: maybe a bug in evas map or a wrong use by myself, but colors look ugly sometime (well, often). Author: cedric Date: 2010-07-01 09:05:17 -0700 (Thu, 01 Jul 2010) New Revision: 49965 Modified: trunk/e/src/bin/e_widget_cslider.c Modified: trunk/e/src/bin/e_widget_cslider.c =================================================================== --- trunk/e/src/bin/e_widget_cslider.c 2010-07-01 15:59:40 UTC (rev 49964) +++ trunk/e/src/bin/e_widget_cslider.c 2010-07-01 16:05:17 UTC (rev 49965) @@ -11,11 +11,16 @@ Evas_Object *o_grad; Evas_Object *o_event; + Eina_List *o_hgrad; + + Evas_Coord x, y, w, h; + int vertical; int fixed; E_Color_Component mode; int valnum; E_Color *color; + E_Color *prev; int dragging; }; @@ -28,9 +33,9 @@ static void _e_wid_update(E_Widget_Data *wd); static void _e_wid_update_standard(E_Widget_Data *wd); static void _e_wid_update_fixed(E_Widget_Data *wd); -static void _e_wid_move(void *data, Evas_Object *o, Evas_Coord x, Evas_Coord y); -static void _e_wid_resize(void *data, Evas_Object *o, Evas_Coord w, Evas_Coord h); +static void _e_wid_move(void *data, Evas *e, Evas_Object *obj, void *event_info); +static void _e_wid_resize(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _e_wid_cb_down(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _e_wid_cb_move(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _e_wid_cb_up(void *data, Evas *e, Evas_Object *obj, void *event_info); @@ -54,6 +59,8 @@ wd->fixed = fixed; wd->mode = mode; wd->color = color; + wd->prev = calloc(1, sizeof (E_Color)); + wd->o_hgrad = NULL; o = edje_object_add(evas); wd->o_cslider = o; @@ -72,47 +79,50 @@ e_widget_resize_object_set(obj, o); /* add gradient obj */ - o = evas_object_gradient_add(evas); + o = evas_object_rectangle_add(evas); e_widget_sub_object_add(obj, o); + evas_object_event_callback_add(o, EVAS_CALLBACK_MOVE, _e_wid_move, wd); + evas_object_event_callback_add(o, EVAS_CALLBACK_RESIZE, _e_wid_resize, wd); + evas_object_show(o); + evas_object_color_set(o, 0, 0, 0, 0); + wd->o_event = o; - if (wd->vertical) - evas_object_gradient_angle_set(o, 0); - else - evas_object_gradient_angle_set(o, 270); - - evas_object_show(o); - wd->o_grad = o; edje_object_part_swallow(wd->o_cslider, "e.swallow.content", o); - evas_object_intercept_resize_callback_add(o, _e_wid_resize, wd); - evas_object_intercept_move_callback_add(o, _e_wid_move, wd); - _e_wid_update(wd); o = evas_object_rectangle_add(evas); - evas_object_color_set(o, 0, 0, 0, 0); - evas_object_show(o); + e_widget_sub_object_add(obj, o); evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, _e_wid_cb_down, obj); evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_MOVE, _e_wid_cb_move, obj); evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_UP, _e_wid_cb_up, obj); - wd->o_event = o; + evas_object_show(o); + evas_object_color_set(o, 255, 255, 255, 255); + wd->o_grad = o; + _e_wid_update(wd); + return obj; } static void -_e_wid_move(void *data, Evas_Object *o, Evas_Coord x, Evas_Coord y) +_e_wid_move(void *data, Evas *e, Evas_Object *obj, void *event_info) { E_Widget_Data *wd = data; + Evas_Coord x, y; + + evas_object_geometry_get(obj, &x, &y, NULL, NULL); evas_object_move(wd->o_grad, x, y); - evas_object_move(wd->o_event, x, y); + _e_wid_update(wd); } static void -_e_wid_resize(void *data, Evas_Object *o, Evas_Coord w, Evas_Coord h) +_e_wid_resize(void *data, Evas *e, Evas_Object *obj, void *event_info) { E_Widget_Data *wd = data; - evas_object_gradient_fill_set(o, 0, 0, w, h); - evas_object_resize(o, w, h); - evas_object_resize(wd->o_event, w, h); + Evas_Coord w, h; + + evas_object_geometry_get(obj, NULL, NULL, &w, &h); + evas_object_resize(wd->o_grad, w, h); + _e_wid_update(wd); } static void @@ -188,96 +198,221 @@ static void _e_wid_update(E_Widget_Data *wd) { - if (wd->fixed) - _e_wid_update_fixed(wd); + Evas_Coord x, y, w, h; + Eina_Bool changed = EINA_FALSE; + + evas_object_geometry_get(wd->o_event, &x, &y, &w, &h); + if (x != wd->x || y != wd->y + || w != wd->w || h != wd->h) + changed = EINA_TRUE; + + if (memcmp(wd->color, wd->prev, sizeof (E_Color))) + changed = EINA_TRUE; + + if (changed) + { + Evas_Object *o; + + if (wd->fixed) + _e_wid_update_fixed(wd); + else + _e_wid_update_standard(wd); + + wd->x = x; wd->y = y; + wd->w = w; wd->h = h; + memcpy(wd->prev, wd->color, sizeof (E_Color)); + + if (wd->mode != E_COLOR_COMPONENT_H) + { + EINA_LIST_FREE(wd->o_hgrad, o) + evas_object_del(o); + evas_object_show(wd->o_grad); + } + else + { + evas_object_hide(wd->o_grad); + } + } +} + +static void +_e_wid_gradient_set(Evas_Object *o, Eina_Bool orientation, + int rf, int gf, int bf, + int rt, int gt, int bt) +{ + Evas_Map *m; + + m = evas_map_new(4); + evas_map_util_points_populate_from_object(m, o); + + if (orientation) + { + evas_map_point_color_set(m, 0, rf, gf, bf, 255); + evas_map_point_color_set(m, 1, rf, gf, bf, 255); + evas_map_point_color_set(m, 2, rt, gt, bt, 255); + evas_map_point_color_set(m, 3, rt, gt, bt, 255); + } else - _e_wid_update_standard(wd); + { + /* Rotate by 270° */ + evas_map_point_color_set(m, 0, rf, gf, bf, 255); + evas_map_point_color_set(m, 1, rt, gt, bt, 255); + evas_map_point_color_set(m, 2, rt, gt, bt, 255); + evas_map_point_color_set(m, 3, rf, gf, bf, 255); + } + + evas_object_map_enable_set(o, 1); + evas_object_map_set(o, m); + evas_map_free(m); } static void _e_wid_update_standard(E_Widget_Data *wd) { + Evas_Object *o; + Eina_List *l; + Evas_Coord x, y, w, h; int r, g, b; + int rd, gd, bd; int max, min; + unsigned int i; float vx = 0; + int *grad[7][3] = { + { &max, &min, &min }, + { &max, &max, &min }, + { &min, &max, &min }, + { &min, &max, &max }, + { &min, &min, &max }, + { &max, &min, &max }, + { &max, &min, &min } + }; if (!wd->color) return; - evas_object_gradient_clear(wd->o_grad); - - switch (wd->mode) + switch (wd->mode) { case E_COLOR_COMPONENT_R: - evas_object_gradient_color_stop_add(wd->o_grad, 0, wd->color->g, wd->color->b, 255, 1); - evas_object_gradient_color_stop_add(wd->o_grad, 255, wd->color->g, wd->color->b, 255, 1); + _e_wid_gradient_set(wd->o_grad, wd->vertical, + 0, wd->color->g, wd->color->b, + 255, wd->color->g, wd->color->b); vx = wd->color->r / 255.0; break; case E_COLOR_COMPONENT_G: - evas_object_gradient_color_stop_add(wd->o_grad, wd->color->r, 0, wd->color->b, 255, 1); - evas_object_gradient_color_stop_add(wd->o_grad, wd->color->r, 255, wd->color->b, 255, 1); + _e_wid_gradient_set(wd->o_grad, wd->vertical, + wd->color->r, 0, wd->color->b, + wd->color->r, 255, wd->color->b); vx = wd->color->g / 255.0; break; case E_COLOR_COMPONENT_B: - evas_object_gradient_color_stop_add(wd->o_grad, wd->color->r, wd->color->g, 0, 255, 1); - evas_object_gradient_color_stop_add(wd->o_grad, wd->color->r, wd->color->g, 255, 255, 1); + _e_wid_gradient_set(wd->o_grad, wd->vertical, + wd->color->r, wd->color->g, 0, + wd->color->r, wd->color->g, 255); vx = wd->color->b / 255.0; break; case E_COLOR_COMPONENT_H: evas_color_hsv_to_rgb(0, wd->color->s, wd->color->v, &max, &min, NULL); - evas_object_gradient_color_stop_add(wd->o_grad, max, min, min, 255, 1); - evas_object_gradient_color_stop_add(wd->o_grad, max, max, min, 255, 1); - evas_object_gradient_color_stop_add(wd->o_grad, min, max, min, 255, 1); - evas_object_gradient_color_stop_add(wd->o_grad, min, max, max, 255, 1); - evas_object_gradient_color_stop_add(wd->o_grad, min, min, max, 255, 1); - evas_object_gradient_color_stop_add(wd->o_grad, max, min, max, 255, 1); - evas_object_gradient_color_stop_add(wd->o_grad, max, min, min, 255, 1); + if (!wd->o_hgrad) + { + Evas *e; + + e = evas_object_evas_get(wd->o_grad); + for (i = 0; i < 6; ++i) + wd->o_hgrad = eina_list_append(wd->o_hgrad, + evas_object_rectangle_add(e)); + } + + evas_object_geometry_get(wd->o_grad, &x, &y, &w, &h); + evas_object_hide(wd->o_grad); + + i = 0; + EINA_LIST_FOREACH(wd->o_hgrad, l, o) + { + if (wd->vertical) + { + evas_object_move(o, x, y + (i * h) / 6); + evas_object_resize(o, w, h / 6); + } + else + { + evas_object_move(o, x + (i * w) / 6, y); + evas_object_resize(o, w / 6, h); + } + + _e_wid_gradient_set(o, wd->vertical, + *grad[i][0], *grad[i][1], *grad[i][2], + *grad[i + 1][0], *grad[i + 1][1], *grad[i + 1][2]); + evas_object_show(o); + i++; + } vx = wd->color->h / 360.0; break; case E_COLOR_COMPONENT_S: evas_color_hsv_to_rgb(wd->color->h, 0, wd->color->v, &r, &g, &b); - evas_object_gradient_color_stop_add(wd->o_grad, r, g, b, 255, 1); - evas_color_hsv_to_rgb(wd->color->h, 1, wd->color->v, &r, &g, &b); - evas_object_gradient_color_stop_add(wd->o_grad, r, g, b, 255, 1); + evas_color_hsv_to_rgb(wd->color->h, 1, wd->color->v, &rd, &gd, &bd); + + _e_wid_gradient_set(wd->o_grad, wd->vertical, + r, g, b, + rd, gd, bd); vx = wd->color->s; break; case E_COLOR_COMPONENT_V: evas_color_hsv_to_rgb(wd->color->h, wd->color->s, 0, &r, &g, &b); - evas_object_gradient_color_stop_add(wd->o_grad, r, g, b, 255, 1); - evas_color_hsv_to_rgb(wd->color->h, wd->color->s, 1, &r, &g, &b); - evas_object_gradient_color_stop_add(wd->o_grad, r, g, b, 255, 1); + evas_color_hsv_to_rgb(wd->color->h, wd->color->s, 1, &rd, &gd, &bd); + + _e_wid_gradient_set(wd->o_grad, wd->vertical, + r, g, b, + rd, gd, bd); vx = wd->color->v; break; case E_COLOR_COMPONENT_MAX: break; } - edje_object_part_drag_value_set(wd->o_cslider, "e.dragable.cursor", vx, vx); + edje_object_part_drag_value_set(wd->o_cslider, "e.dragable.cursor", vx, vx); } void _e_wid_update_fixed(E_Widget_Data *wd) { - int max, min; - float vx = 0; - if (!wd) return; +#define GMAX 255 +#define GMIN 0 - evas_object_gradient_clear(wd->o_grad); - switch (wd->mode) + Evas_Object *o; + Eina_List *l; + Evas_Coord x, y, w, h; + unsigned int i; + float vx = 0; + int grad[7][3] = { + { GMAX, GMIN, GMIN }, + { GMAX, GMIN, GMAX }, + { GMIN, GMIN, GMAX }, + { GMIN, GMAX, GMAX }, + { GMIN, GMAX, GMIN }, + { GMAX, GMAX, GMIN }, + { GMAX, GMIN, GMIN } + }; + + if (!wd) return; + + switch (wd->mode) { case E_COLOR_COMPONENT_R: - evas_object_gradient_color_stop_add(wd->o_grad, 255, 0, 0, 255, 1); - evas_object_gradient_color_stop_add(wd->o_grad, 0, 0, 0, 255, 1); + _e_wid_gradient_set(wd->o_grad, wd->vertical, + 255, 0, 0, + 0, 0, 0); vx = wd->color->r / 255.0; break; case E_COLOR_COMPONENT_G: - evas_object_gradient_color_stop_add(wd->o_grad, 0, 255, 0, 255, 1); - evas_object_gradient_color_stop_add(wd->o_grad, 0, 0, 0, 255, 1); + _e_wid_gradient_set(wd->o_grad, wd->vertical, + 0, 255, 0, + 0, 0, 0); vx = wd->color->g / 255.0; break; case E_COLOR_COMPONENT_B: - evas_object_gradient_color_stop_add(wd->o_grad, 0, 0, 255, 255, 1); - evas_object_gradient_color_stop_add(wd->o_grad, 0, 0, 0, 255, 1); + _e_wid_gradient_set(wd->o_grad, wd->vertical, + 0, 0, 255, + 0, 0, 0); vx = wd->color->b / 255.0; break; case E_COLOR_COMPONENT_H: @@ -291,33 +426,62 @@ * 300 x n x * 360 x n n */ - min = 0; - max = 255; - evas_object_gradient_color_stop_add(wd->o_grad, max, min, min, 255, 1); - evas_object_gradient_color_stop_add(wd->o_grad, max, min, max, 255, 1); - evas_object_gradient_color_stop_add(wd->o_grad, min, min, max, 255, 1); - evas_object_gradient_color_stop_add(wd->o_grad, min, max, max, 255, 1); - evas_object_gradient_color_stop_add(wd->o_grad, min, max, min, 255, 1); - evas_object_gradient_color_stop_add(wd->o_grad, max, max, min, 255, 1); - evas_object_gradient_color_stop_add(wd->o_grad, max, min, min, 255, 1); + if (!wd->o_hgrad) + { + Evas *e; + + e = evas_object_evas_get(wd->o_grad); + for (i = 0; i < 6; ++i) + wd->o_hgrad = eina_list_append(wd->o_hgrad, + evas_object_rectangle_add(e)); + } + + evas_object_geometry_get(wd->o_grad, &x, &y, &w, &h); + evas_object_hide(wd->o_grad); + + i = 0; + EINA_LIST_FOREACH(wd->o_hgrad, l, o) + { + if (wd->vertical) + { + evas_object_move(o, x, y + (i * h) / 6); + evas_object_resize(o, w, h / 6); + } + else + { + evas_object_move(o, x + (i * w) / 6, y); + evas_object_resize(o, w / 6, h); + } + + _e_wid_gradient_set(o, wd->vertical, + grad[i][0], grad[i][1], grad[i][2], + grad[i + 1][0], grad[i + 1][1], grad[i + 1][2]); + evas_object_show(o); + i++; + } vx = wd->color->h / 360.0; break; case E_COLOR_COMPONENT_S: - evas_object_gradient_color_stop_add(wd->o_grad, 255, 255, 255, 255, 1); - evas_object_gradient_color_stop_add(wd->o_grad, 0, 0, 0, 255, 1); - vx = wd->color->s; + _e_wid_gradient_set(wd->o_grad, wd->vertical, + 255, 255, 255, + 0, 0, 0); + vx = wd->color->s; break; case E_COLOR_COMPONENT_V: - evas_object_gradient_color_stop_add(wd->o_grad, 255, 255, 255, 255, 1); - evas_object_gradient_color_stop_add(wd->o_grad, 0, 0, 0, 255, 1); + _e_wid_gradient_set(wd->o_grad, wd->vertical, + 255, 255, 255, + 0, 0, 0); vx = wd->color->v; break; case E_COLOR_COMPONENT_MAX: break; } - edje_object_part_drag_value_set(wd->o_cslider, "e.dragable.cursor", vx, vx); + edje_object_part_drag_value_set(wd->o_cslider, "e.dragable.cursor", vx, vx); + +#undef GMAX +#undef GMIN } static void |
From: Enlightenment S. <no-...@en...> - 2010-07-02 13:47:37
|
Log: * e: don't crash to easily when Ecore_Evas windows can't be created. Author: cedric Date: 2010-07-02 06:47:31 -0700 (Fri, 02 Jul 2010) New Revision: 49996 Modified: trunk/e/src/bin/e_canvas.c trunk/e/src/bin/e_popup.c Modified: trunk/e/src/bin/e_canvas.c =================================================================== --- trunk/e/src/bin/e_canvas.c 2010-07-02 11:17:59 UTC (rev 49995) +++ trunk/e/src/bin/e_canvas.c 2010-07-02 13:47:31 UTC (rev 49996) @@ -228,6 +228,8 @@ if (direct_resize) ecore_evas_software_x11_direct_resize_set(ee, 1); if (win_ret) *win_ret = ecore_evas_software_x11_window_get(ee); } + else + EINA_LOG_ERR("Impossible to build any Ecore_Evas window !!"); } return ee; } Modified: trunk/e/src/bin/e_popup.c =================================================================== --- trunk/e/src/bin/e_popup.c 2010-07-02 11:17:59 UTC (rev 49995) +++ trunk/e/src/bin/e_popup.c 2010-07-02 13:47:31 UTC (rev 49996) @@ -53,6 +53,11 @@ pop->ecore_evas = e_canvas_new(e_config->evas_engine_popups, pop->zone->container->win, pop->zone->x + pop->x, pop->zone->y + pop->y, pop->w, pop->h, 1, 1, &(pop->evas_win)); + if (!pop->ecore_evas) + { + free(pop); + return NULL; + } /* avoid excess exposes when shaped - set damage avoid to 1 */ // ecore_evas_avoid_damage_set(pop->ecore_evas, 1); |