EAPI int efreet_mime_shutdown(void) { if (--_efreet_mime_init_count != 0) return _efreet_mime_init_count; efreet_mime_icons_debug(); IF_RELEASE(_mime_inode_symlink); IF_RELEASE(_mime_inode_fifo); IF_RELEASE(_mime_inode_chardevice); IF_RELEASE(_mime_inode_blockdevice); IF_RELEASE(_mime_inode_socket); IF_RELEASE(_mime_inode_mountpoint); IF_RELEASE(_mime_inode_directory); IF_RELEASE(_mime_application_x_executable); IF_RELEASE(_mime_application_octet_stream); IF_RELEASE(_mime_text_plain); IF_FREE_LIST(globs, efreet_mime_glob_free); IF_FREE_LIST(magics, efreet_mime_magic_free); IF_FREE_HASH(monitors); IF_FREE_HASH(wild); IF_FREE_HASH(mime_icons); eina_log_domain_unregister(_efreet_mime_log_dom); _efreet_mime_log_dom = -1; efreet_shutdown(); ecore_file_shutdown(); ecore_shutdown(); return _efreet_mime_init_count; }
/** * @internal * @return Returns no value * @brief Cleans up the efreet base settings system */ void efreet_base_shutdown(void) { IF_RELEASE(efreet_home_dir); IF_RELEASE(xdg_desktop_dir); IF_RELEASE(xdg_download_dir); IF_RELEASE(xdg_templates_dir); IF_RELEASE(xdg_publicshare_dir); IF_RELEASE(xdg_documents_dir); IF_RELEASE(xdg_music_dir); IF_RELEASE(xdg_pictures_dir); IF_RELEASE(xdg_videos_dir); IF_RELEASE(xdg_data_home); IF_RELEASE(xdg_config_home); IF_RELEASE(xdg_cache_home); IF_RELEASE(xdg_runtime_dir); IF_FREE_LIST(xdg_data_dirs, eina_stringshare_del); IF_FREE_LIST(xdg_config_dirs, eina_stringshare_del); IF_RELEASE(hostname); eina_log_domain_unregister(_efreet_base_log_dom); _efreet_base_log_dom = -1; }
EAPI void efreet_desktop_free(Efreet_Desktop *desktop) { if (!desktop) return; desktop->ref--; if (desktop->ref > 0) return; if (desktop->eet) { efreet_cache_desktop_free(desktop); } else { IF_FREE(desktop->orig_path); IF_FREE(desktop->version); IF_FREE(desktop->name); IF_FREE(desktop->generic_name); IF_FREE(desktop->comment); IF_FREE(desktop->icon); IF_FREE(desktop->url); IF_FREE(desktop->try_exec); IF_FREE(desktop->exec); IF_FREE(desktop->path); IF_FREE(desktop->startup_wm_class); IF_FREE_LIST(desktop->only_show_in, eina_stringshare_del); IF_FREE_LIST(desktop->not_show_in, eina_stringshare_del); IF_FREE_LIST(desktop->categories, eina_stringshare_del); IF_FREE_LIST(desktop->mime_types, eina_stringshare_del); IF_FREE_HASH(desktop->x); if (desktop->type_data) { Efreet_Desktop_Type_Info *info; info = eina_list_nth(efreet_desktop_types, desktop->type); if (info->free_func) info->free_func(desktop->type_data); } free(desktop); } }
/** * @internal * @return Returns no value * @brief Shuts down the icon system */ void efreet_icon_shutdown(void) { IF_RELEASE(efreet_icon_user_dir); IF_RELEASE(efreet_icon_deprecated_user_dir); IF_FREE_LIST(efreet_icon_extensions, eina_stringshare_del); efreet_extra_icon_dirs = eina_list_free(efreet_extra_icon_dirs); eina_log_domain_unregister(_efreet_icon_log_dom); _efreet_icon_log_dom = -1; }
/** * @brief Cleanup internal data structures used by ewl. * * This should be called to cleanup internal EWL data structures, if using * ecore directly rather than using ewl_main(). */ int ewl_shutdown(void) { Ewl_Shutdown_Hook hook; void (*shutdown)(void); DENTER_FUNCTION(DLEVEL_STABLE); if (--ewl_init_count) DRETURN_INT(ewl_init_count, DLEVEL_STABLE); while ((hook = ecore_list_first_remove(shutdown_hooks))) hook(); IF_FREE_LIST(shutdown_hooks); /* * Destroy all existing widgets. */ if (ewl_embed_list) { Ewl_Widget *emb; while ((emb = ecore_list_first_remove(ewl_embed_list))) ewl_widget_destroy(emb); while (ewl_garbage_collect_idler(NULL) > 0) ; IF_FREE_LIST(ewl_embed_list); } if (idle_enterer) { ecore_idle_enterer_del(idle_enterer); idle_enterer = NULL; } /* * Free internal accounting lists. */ IF_FREE_LIST(ewl_window_list); IF_FREE_LIST(reveal_list); IF_FREE_LIST(obscure_list); IF_FREE_LIST(configure_active); IF_FREE_LIST(configure_available); IF_FREE_LIST(realize_list); IF_FREE_LIST(destroy_list); IF_FREE_LIST(free_evas_list); IF_FREE_LIST(free_evas_object_list); IF_FREE_LIST(child_add_list); /* shutdown all the subsystems */ while ((shutdown = ecore_list_first_remove(shutdown_queue))) shutdown(); IF_FREE_LIST(shutdown_queue); DRETURN_INT(ewl_init_count, DLEVEL_STABLE); }