void ecore_imf_module_init(void) { char buf[PATH_MAX] = ""; pfx = eina_prefix_new(NULL, ecore_imf_init, "ECORE_IMF", "ecore_imf", "checkme", PACKAGE_BIN_DIR, PACKAGE_LIB_DIR, PACKAGE_DATA_DIR, PACKAGE_DATA_DIR); #if defined(HAVE_GETUID) && defined(HAVE_GETEUID) if (getuid() == geteuid()) #endif { if (getenv("EFL_RUN_IN_TREE")) { struct stat st; snprintf(buf, sizeof(buf), "%s/src/modules/ecore_imf", PACKAGE_BUILD_DIR); if (stat(buf, &st) == 0) { const char *built_modules[] = { #ifdef ENABLE_XIM "xim", #endif #ifdef BUILD_ECORE_IMF_IBUS "ibus", #endif #ifdef BUILD_ECORE_IMF_SCIM "scim", #endif #ifdef BUILD_ECORE_IMF_WAYLAND "wayland", #endif NULL }; const char **itr; for (itr = built_modules; *itr != NULL; itr++) { snprintf(buf, sizeof(buf), "%s/src/modules/ecore_imf/%s/.libs", PACKAGE_BUILD_DIR, *itr); module_list = eina_module_list_get(module_list, buf, EINA_FALSE, NULL, NULL); } if (module_list) eina_module_list_load(module_list); return; } } } snprintf(buf, sizeof(buf), "%s/ecore_imf/modules", eina_prefix_lib_get(pfx)); module_list = eina_module_arch_list_get(module_list, buf, MODULE_ARCH); // XXX: MODFIX: do not list ALL modules and load them ALL! this is // is wrong - we end up loading BOTH xim ANd scim (and maybe uim too) // etc. etc. when we need only 1! eina_module_list_load(module_list); }
static void _emotion_modules_load(void) { char buf[PATH_MAX]; if (_emotion_modules_loaded) return; _emotion_modules_loaded = EINA_TRUE; #if defined(HAVE_GETUID) && defined(HAVE_GETEUID) if (getuid() == geteuid()) #endif { if (getenv("EFL_RUN_IN_TREE")) { struct stat st; snprintf(buf, sizeof(buf), "%s/src/modules/emotion", PACKAGE_BUILD_DIR); if (stat(buf, &st) == 0) { const char *built_modules[] = { #ifdef EMOTION_BUILD_GSTREAMER "gstreamer", #endif #ifdef EMOTION_BUILD_GSTREAMER1 "gstreamer1", #endif #ifdef EMOTION_BUILD_XINE "xine", #endif NULL }; const char **itr; for (itr = built_modules; *itr != NULL; itr++) { snprintf(buf, sizeof(buf), "%s/src/modules/emotion/%s/.libs", PACKAGE_BUILD_DIR, *itr); _emotion_modules = eina_module_list_get(_emotion_modules, buf, EINA_FALSE, NULL, NULL); } return; } } } snprintf(buf, sizeof(buf), "%s/emotion/modules", eina_prefix_lib_get(_emotion_pfx)); _emotion_modules = eina_module_arch_list_get(_emotion_modules, buf, MODULE_ARCH); // no - this is dumb. load ALL modules we find - force ALL the code pages of // every lib a module MAY depend on and need to execute some init code into // memory even if we never use it? not a good idea! the point of modules was // to avoid such cost until a module is EXPLICITLY asked for. //load: // if (_emotion_modules) // eina_module_list_load(_emotion_modules); // // if (!_emotion_engine_registry) // ERR("Couldn't find any emotion engine."); }
static void _mempool_init(void) { eina_init(); /* force modules to be loaded in case they are not installed */ _modules = eina_module_list_get(NULL, PACKAGE_BUILD_DIR "/src/modules/eina", EINA_TRUE, NULL, NULL); eina_module_list_load(_modules); }
/** * @brief Init the module system */ int enna_module_init(void) { Eina_Array_Iterator iterator; unsigned int i; #ifdef USE_STATIC_MODULES Enna_Module_Api *api; /* Populate the array of available plugins statically */ _plugins_array = eina_array_new(20); #ifdef BUILD_ACTIVITY_BOOKSTORE eina_array_push(_plugins_array, &enna_mod_activity_bookstore_api); #endif #ifdef BUILD_ACTIVITY_CONFIGURATION eina_array_push(_plugins_array, &enna_mod_activity_configuration_api); #endif #ifdef BUILD_ACTIVITY_GAMES eina_array_push(_plugins_array, &enna_mod_activity_games_api); #endif #ifdef BUILD_ACTIVITY_MUSIC eina_array_push(_plugins_array, &enna_mod_activity_music_api); #endif #ifdef BUILD_ACTIVITY_PHOTO eina_array_push(_plugins_array, &enna_mod_activity_photo_api); #endif #ifdef BUILD_ACTIVITY_TV eina_array_push(_plugins_array, &enna_mod_activity_tv_api); #endif #ifdef BUILD_ACTIVITY_VIDEO eina_array_push(_plugins_array, &enna_mod_activity_video_api); #endif #ifdef BUILD_ACTIVITY_WEATHER eina_array_push(_plugins_array, &enna_mod_activity_weather_api); #endif #ifdef BUILD_BROWSER_CDDA eina_array_push(_plugins_array, &enna_mod_browser_cdda_api); #endif #ifdef BUILD_BROWSER_DVD eina_array_push(_plugins_array, &enna_mod_browser_dvd_api); #endif #ifdef BUILD_BROWSER_IPOD eina_array_push(_plugins_array, &enna_mod_browser_ipod_api); #endif #ifdef BUILD_BROWSER_SPOTIFY eina_array_push(_plugins_array, &enna_mod_browser_spotify_api); #endif #ifdef BUILD_BROWSER_LOCALFILES eina_array_push(_plugins_array, &enna_mod_browser_localfiles_api); #endif #ifdef BUILD_BROWSER_NETSTREAMS eina_array_push(_plugins_array, &enna_mod_browser_netstreams_api); #endif #ifdef BUILD_BROWSER_PODCASTS eina_array_push(_plugins_array, &enna_mod_browser_podcasts_api); #endif #ifdef BUILD_BROWSER_SHOUTCAST eina_array_push(_plugins_array, &enna_mod_browser_shoutcast_api); #endif #ifdef BUILD_BROWSER_UPNP eina_array_push(_plugins_array, &enna_mod_browser_upnp_api); #endif #ifdef BUILD_BROWSER_VALHALLA eina_array_push(_plugins_array, &enna_mod_browser_valhalla_api); #endif #ifdef BUILD_GADGET_DATE eina_array_push(_plugins_array, &enna_mod_gadget_date_api); #endif #ifdef BUILD_GADGET_DUMMY eina_array_push(_plugins_array, &enna_mod_gadget_dummy_api); #endif #ifdef BUILD_GADGET_WEATHER eina_array_push(_plugins_array, &enna_mod_gadget_weather_api); #endif #ifdef BUILD_INPUT_KBD eina_array_push(_plugins_array, &enna_mod_input_kbd_api); #endif #ifdef BUILD_INPUT_LIRC eina_array_push(_plugins_array, &enna_mod_input_lirc_api); #endif #ifdef BUILD_INPUT_WIIMOTE eina_array_push(_plugins_array, &enna_mod_input_wiimote_api); #endif #ifdef BUILD_VOLUME_HAL eina_array_push(_plugins_array, &enna_mod_volume_hal_api); #endif #ifdef BUILD_VOLUME_MTAB eina_array_push(_plugins_array, &enna_mod_volume_mtab_api); #endif #ifdef BUILD_VOLUME_UDEV eina_array_push(_plugins_array, &enna_mod_volume_udev_api); #endif /* Log the array */ enna_log(ENNA_MSG_INFO, NULL, "Available Plugins (static):"); EINA_ARRAY_ITER_NEXT(_plugins_array, i, api, iterator) enna_log(ENNA_MSG_INFO, NULL, "\t * %s", api->name); #else Eina_Module *module; /* Populate the array of available plugins dinamically */ _plugins_array = eina_array_new(20); _plugins_array = eina_module_list_get(_plugins_array, PACKAGE_LIB_DIR"/enna/modules/", 0, NULL, NULL); enna_log(ENNA_MSG_INFO, NULL, "Plugin Directory: %s", PACKAGE_LIB_DIR"/enna/modules/"); /* Log the array */ enna_log(ENNA_MSG_INFO, NULL, "Available Plugins (dynamic):"); EINA_ARRAY_ITER_NEXT(_plugins_array, i, module, iterator) enna_log(ENNA_MSG_INFO, NULL, "\t * %s", eina_module_file_get(module)); #endif /* USE_STATIC_MODULES */ #if ENABLE_CONFIG_PANEL _config_panel = enna_config_panel_register(_("Modules"), "icon/module", _config_panel_show, _config_panel_hide, NULL); #endif return 0; }
static Eina_Bool _etui_modules_load(void) { char buf[PATH_MAX]; char *path; Eina_Prefix *prefix; if (_etui_modules_loaded) return EINA_TRUE; _etui_modules_loaded = EINA_TRUE; path = eina_module_environment_path_get("HOME", "/.etui/modules"); if (path) { _etui_modules = eina_module_arch_list_get(_etui_modules, path, MODULE_ARCH); free(path); } path = eina_module_environment_path_get("ETUI_MODULES_DIR", "/etui/modules"); if (path) { _etui_modules = eina_module_arch_list_get(_etui_modules, path, MODULE_ARCH); free(path); } prefix = eina_prefix_new(NULL, etui_init, "ETUI", "etui", "checkme", PACKAGE_BIN_DIR, PACKAGE_LIB_DIR, PACKAGE_DATA_DIR, PACKAGE_DATA_DIR); if (prefix) { snprintf(buf, sizeof(buf), "%s/etui/modules", eina_prefix_lib_get(prefix)); _etui_modules = eina_module_arch_list_get(_etui_modules, buf, MODULE_ARCH); eina_prefix_free(prefix); } else { INF("Could not create prefix, use library path directly."); _etui_modules = eina_module_arch_list_get(_etui_modules, PACKAGE_LIB_DIR"/etui/modules", MODULE_ARCH); } path = eina_module_symbol_path_get(etui_object_add, "/etui/modules"); if (path) { _etui_modules = eina_module_list_get(_etui_modules, path, 0, NULL, NULL); free(path); } if (!_etui_modules) { ERR("Could not find modules."); return EINA_FALSE; } eina_module_list_load(_etui_modules); /* TODO: registry */ return EINA_TRUE; }