void
efreet_icon_shutdown(void)
{
- void *d;
-
+ void *d;
+
if (--efreet_icon_init_count)
return;
IF_FREE(efreet_icon_user_dir);
IF_FREE(efreet_icon_deprecated_user_dir);
- EINA_LIST_FREE(efreet_icon_extensions, d) free(d);
+ IF_FREE_LIST(efreet_icon_extensions, free);
IF_FREE_HASH(efreet_icon_themes);
- IF_FREE_LIST(efreet_extra_icon_dirs);
+ efreet_extra_icon_dirs = eina_list_free(efreet_extra_icon_dirs);
IF_FREE_HASH(efreet_icon_cache);
if (fake_null)
- {
- efreet_icon_theme_free(fake_null);
- fake_null = NULL;
- }
-
+ {
+ efreet_icon_theme_free(fake_null);
+ fake_null = NULL;
+ }
+
ecore_shutdown();
efreet_icon_init_count = 0;
}
if (theme_name) theme = efreet_icon_theme_find(theme_name);
if (!theme)
{
- if ((fake_null) && (!theme_name)) return fake_null;
+ if ((fake_null) && (!theme_name)) return fake_null;
theme = efreet_icon_theme_new();
theme->fake = 1;
if (theme_name)
IF_FREE(icon->path);
IF_FREE(icon->name);
- IF_FREE_LIST(icon->attach_points);
+ IF_FREE_LIST(icon->attach_points, free);
FREE(icon);
}
static void
efreet_icon_theme_free(Efreet_Icon_Theme *theme)
{
- void *d;
- if (!theme) return;
+ void *d;
+ if (!theme) return;
- IF_RELEASE(theme->name.internal);
- IF_RELEASE(theme->name.name);
-
- IF_FREE(theme->comment);
- IF_FREE(theme->example_icon);
+ IF_RELEASE(theme->name.internal);
+ IF_RELEASE(theme->name.name);
+
+ IF_FREE(theme->comment);
+ IF_FREE(theme->example_icon);
- EINA_LIST_FREE(theme->paths, d) free(d);
- EINA_LIST_FREE(theme->inherits, d) free(d);
- EINA_LIST_FREE(theme->directories, d) efreet_icon_theme_directory_free(d);
+ IF_FREE_LIST(theme->paths, free);
+ IF_FREE_LIST(theme->inherits, free);
+ IF_FREE_LIST(theme->directories, efreet_icon_theme_directory_free);
- FREE(theme);
+ FREE(theme);
}
/**
return dir;
}
+/**
+ * @internal
+ * @param dir: The Efreet_Icon_Theme_Directory to free
+ * @return Returns no value
+ * @brief Frees the given directory @a dir
+ */
static void
efreet_icon_theme_directory_free(Efreet_Icon_Theme_Directory *dir)
{
- free(dir->name);
- free(dir);
+ if (!dir) return;
+
+ IF_FREE(dir->name);
+ FREE(dir);
}
static int
static void efreet_menu_filter_free(Efreet_Menu_Filter *filter);
static Efreet_Menu_Layout *efreet_menu_layout_new(void);
+static void efreet_menu_layout_free(Efreet_Menu_Layout *layout);
static Efreet_Menu_Filter_Op *efreet_menu_filter_op_new(void);
static void efreet_menu_filter_op_free(Efreet_Menu_Filter_Op *op);
char buf[PATH_MAX];
char *p, *s;
- IF_FREE_LIST(efreet_menu_kde_legacy_dirs);
+ IF_FREE_LIST(efreet_menu_kde_legacy_dirs, eina_stringshare_del);
f = popen("kde-config --path apps", "r");
if (!f) return 0;
IF_FREE_HASH(efreet_menu_move_cbs);
IF_FREE_HASH(efreet_menu_layout_cbs);
- IF_FREE_LIST(efreet_menu_kde_legacy_dirs);
+ IF_FREE_LIST(efreet_menu_kde_legacy_dirs, eina_stringshare_del);
IF_FREE_HASH(efreet_merged_menus);
IF_FREE_HASH(efreet_merged_dirs);
void
efreet_menu_internal_free(Efreet_Menu_Internal *internal)
{
- void *d;
-
+ void *d;
+
if (!internal) return;
IF_FREE(internal->file.path);
IF_RELEASE(internal->name.internal);
internal->name.name = NULL;
- IF_FREE_LIST(internal->applications);
+ internal->applications = eina_list_free(internal->applications);
IF_FREE_DLIST(internal->directories);
- EINA_LIST_FREE(internal->app_dirs, d) efreet_menu_app_dir_free(d);
-// IF_FREE_LIST(internal->app_dirs);
- IF_FREE_LIST(internal->app_pool);
+ IF_FREE_LIST(internal->app_dirs, efreet_menu_app_dir_free);
+ IF_FREE_LIST(internal->app_pool, efreet_menu_desktop_free);
IF_FREE_DLIST(internal->directory_dirs);
IF_FREE_HASH(internal->directory_cache);
- IF_FREE_LIST(internal->moves);
- IF_FREE_LIST(internal->filters);
+ IF_FREE_LIST(internal->moves, efreet_menu_move_free);
+ IF_FREE_LIST(internal->filters, efreet_menu_filter_free);
- IF_FREE_LIST(internal->sub_menus);
+ IF_FREE_LIST(internal->sub_menus, efreet_menu_internal_free);
- IF_FREE_LIST(internal->layout);
- IF_FREE_LIST(internal->default_layout);
+ IF_FREE_LIST(internal->layout, efreet_menu_layout_free);
+ IF_FREE_LIST(internal->default_layout, efreet_menu_layout_free);
FREE(internal);
}
snprintf(dir_path, PATH_MAX, "%s/%s", path, file->d_name);
if (!efreet_menu_merge(parent, xml, dir_path))
- {
+ {
closedir(files);
return 0;
- }
+ }
}
closedir(files);
legacy_internal, file_path, prefix);
if (!ret)
{
- efreet_menu_filter_free(filter);
+ efreet_menu_filter_free(filter);
efreet_menu_internal_free(legacy_internal);
FREE(path);
closedir(files);
closedir(files);
FREE(path);
- efreet_menu_filter_free(filter);
+ efreet_menu_filter_free(filter);
return legacy_internal;
}
/**
* @internal
+ * @param filter: The filter to work with
+ * @return Returns no data
+ * @brief Frees the given filter and all data
+ */
+static void
+efreet_menu_layout_free(Efreet_Menu_Layout *layout)
+{
+ if (!layout) return;
+
+ IF_FREE(layout->name);
+ FREE(layout);
+}
+
+/**
+ * @internal
* @return Returns a new Efreet_Menu_Filter_Op on success or NULL on failure
* @brief Creates and initializes an Efreet_Menu_Filter_Op structure
*/
{
if (!op) return;
- IF_FREE_LIST(op->categories);
- IF_FREE_LIST(op->filenames);
- IF_FREE_LIST(op->filters);
+ IF_FREE_LIST(op->categories, free);
+ IF_FREE_LIST(op->filenames, free);
+ IF_FREE_LIST(op->filters, efreet_menu_filter_op_free);
FREE(op);
}
{
IF_RELEASE(entry->name);
IF_RELEASE(entry->icon);
- IF_FREE_LIST(entry->entries);
+ entry->entries = eina_list_free(entry->entries);
IF_RELEASE(entry->id);
if (entry->desktop) efreet_desktop_free(entry->desktop);
FREE(entry);
efreet_menu_internal_free(origin);
}
}
- IF_FREE_LIST(internal->moves);
+ IF_FREE_LIST(internal->moves, efreet_menu_move_free);
}
/**
return dir;
}
+/**
+ * @internal
+ * @param dir: The Efreet_Menu_App_Dir to free
+ * @return Returns no value.
+ * @brief Frees the given dir structure
+ */
static void
efreet_menu_app_dir_free(Efreet_Menu_App_Dir *dir)
{
- free(dir->path);
- free(dir->prefix);
- free(dir);
+ if (!dir) return;
+
+ IF_FREE(dir->path);
+ IF_FREE(dir->prefix);
+ FREE(dir);
}
/**
if (!internal || internal->directories) return;
internal->directories = ecore_dlist_new();
- ecore_dlist_free_cb_set(internal->directories, free);
+ ecore_dlist_free_cb_set(internal->directories, free);
}
static char *
entry->entries = eina_list_append(entry->entries, sub_entry);
}
}
- IF_FREE_LIST(internal->applications);
+ internal->applications = eina_list_free(internal->applications);
}
else if (internal->sub_menus && !strcmp(layout->name, "menus"))
{
}
efreet_menu_internal_free(sub);
}
- IF_FREE_LIST(internal->sub_menus);
+ IF_FREE_LIST(internal->sub_menus, efreet_menu_internal_free);
}
else if (internal->sub_menus && !strcmp(layout->name, "all"))
{