/* local subsystem functions */ static void _e_xinerama_clean(void) { E_FREE_LIST(all_screens, free); chosen_screens = eina_list_free(chosen_screens); E_FREE_LIST(fake_screens, free); }
EINTERN int e_dnd_shutdown(void) { E_FREE_LIST(_drag_list, e_object_del); _active_handlers = eina_list_free(_active_handlers); E_FREE_LIST(_drop_handlers, e_drop_handler_del); E_FREE_LIST(_event_handlers, ecore_event_handler_del); eina_hash_free(_drop_win_hash); eina_hash_free(_drop_handlers_responsives); eina_stringshare_del(_type_text_uri_list); eina_stringshare_del(_type_xds); eina_stringshare_del(_type_text_x_moz_url); eina_stringshare_del(_type_enlightenment_x_file); _type_text_uri_list = NULL; _type_xds = NULL; _type_text_x_moz_url = NULL; _type_enlightenment_x_file = NULL; _text_atom = 0; return 1; }
E_API void e_xinerama_screens_set(Eina_List *screens) { E_FREE_LIST(all_screens, free); chosen_screens = eina_list_free(chosen_screens); all_screens = screens; _e_xinerama_update(); }
EINTERN Eina_List * ech_language_enumerate(void) { Eina_List *e_lang_list, *blang_list = NULL; FILE *output; char line[32]; e_lang_list = e_intl_language_list(); /* Get list of all locales and start making map */ #ifdef __OpenBSD__ output = popen("ls /usr/share/locale", "r"); #else output = popen("locale -a", "r"); #endif if (!output) return 0; while (fscanf(output, "%[^\n]\n", line) == 1) { E_Locale_Parts *locale_parts; char *basic_language; unsigned int i = 0; locale_parts = e_intl_locale_parts_get(line); if (!locale_parts) continue; if (locale_parts->mask & E_INTL_LOC_REGION) basic_language = e_intl_locale_parts_combine(locale_parts, E_INTL_LOC_LANG | E_INTL_LOC_REGION); else basic_language = strdup(locale_parts->lang); e_intl_locale_parts_free(locale_parts); if (!basic_language) continue; while (basic_language_predefined_pairs[i].locale_key) { /* if basic language is supported by E and System*/ if (!strncmp(basic_language_predefined_pairs[i].locale_key, basic_language, strlen(basic_language))) { if ((!blang_list) || (!eina_list_data_find(blang_list, &basic_language_predefined_pairs[i]))) blang_list = eina_list_append(blang_list, &basic_language_predefined_pairs[i]); break; } i++; } free(basic_language); } pclose(output); E_FREE_LIST(e_lang_list, free); return blang_list; }
EINTERN int e_thumb_shutdown(void) { _e_thumb_thumbnailers_kill_cancel(); _e_thumb_cb_kill(NULL); if (_exe_del_handler) ecore_event_handler_del(_exe_del_handler); _exe_del_handler = NULL; _thumbnailers = eina_list_free(_thumbnailers); E_FREE_LIST(_thumbnailers_exe, ecore_exe_free); _thumb_queue = eina_list_free(_thumb_queue); _objid = 0; eina_hash_free(_thumbs); _thumbs = NULL; _pending = 0; return 1; }
EINTERN int e_randr2_shutdown(void) { _animated_apply_abort(); // nuke any screen config delay handler if (_screen_delay_timer) ecore_timer_del(_screen_delay_timer); _screen_delay_timer = NULL; // stop listening to driver info if (e_comp->screen->shutdown) e_comp->screen->shutdown(); // clear up all event handlers E_FREE_LIST(_ev_handlers, ecore_event_handler_del); // free up screen info _info_free(e_randr2); e_randr2 = NULL; _config_free(e_randr2_cfg); e_randr2_cfg = NULL; // free up data descriptors E_CONFIG_DD_FREE(_e_randr2_cfg_edd); E_CONFIG_DD_FREE(_e_randr2_cfg_screen_edd) return 1; }