int wkb_ibus_init(void) { if (wkb_ibus && wkb_ibus->refcount) goto end; if (!eldbus_init()) { ERR("Error initializing Eldbus"); goto eldbus_err; } if (!efreet_init()) { ERR("Error initializing Efreet"); goto efreet_err; } if (!wkb_ibus_config_eet_init()) { ERR("Error initializing wkb_config_eet"); goto eet_err; } if (!wkb_ibus && !(wkb_ibus = calloc(1, sizeof(*wkb_ibus)))) { ERR("Error calloc"); goto calloc_err; } WKB_IBUS_CONNECTED = ecore_event_type_new(); WKB_IBUS_DISCONNECTED = ecore_event_type_new(); WKB_IBUS_CONFIG_VALUE_CHANGED = ecore_event_type_new(); WKB_THEME_CHANGED = ecore_event_type_new(); wkb_ibus->add_handle = ecore_event_handler_add(ECORE_EXE_EVENT_ADD, _wkb_ibus_exe_add_cb, NULL); wkb_ibus->data_handle = ecore_event_handler_add(ECORE_EXE_EVENT_DATA, _wkb_ibus_exe_data_cb, NULL); end: return ++wkb_ibus->refcount; calloc_err: wkb_ibus_config_eet_shutdown(); eet_err: efreet_shutdown(); efreet_err: eldbus_shutdown(); eldbus_err: return 0; }
Eina_Bool music_control_dbus_init(E_Music_Control_Module_Context *ctxt, const char *bus) { eldbus_init(); ctxt->conn = eldbus_connection_get(ELDBUS_CONNECTION_TYPE_SESSION); EINA_SAFETY_ON_NULL_RETURN_VAL(ctxt->conn, EINA_FALSE); ctxt->mrpis2 = mpris_media_player2_proxy_get(ctxt->conn, bus, NULL); ctxt->mpris2_player = media_player2_player_proxy_get(ctxt->conn, bus, NULL); eldbus_proxy_event_callback_add(ctxt->mpris2_player, ELDBUS_PROXY_EVENT_PROPERTY_CHANGED, prop_changed, ctxt); eldbus_name_owner_has(ctxt->conn, bus, cb_name_owner_has, ctxt); return EINA_TRUE; }
int efreet_cache_init(void) { char buf[PATH_MAX]; _efreet_cache_log_dom = eina_log_domain_register("efreet_cache", EFREET_DEFAULT_LOG_COLOR); if (_efreet_cache_log_dom < 0) return 0; if (!eina_lock_new(&_lock)) { ERR("Could not create lock"); goto error; } snprintf(buf, sizeof(buf), "%s/efreet", efreet_cache_home_get()); if (!ecore_file_mkpath(buf)) { ERR("Failed to create directory '%s'", buf); } EFREET_EVENT_ICON_CACHE_UPDATE = ecore_event_type_new(); EFREET_EVENT_DESKTOP_CACHE_UPDATE = ecore_event_type_new(); EFREET_EVENT_DESKTOP_CACHE_BUILD = ecore_event_type_new(); themes = eina_hash_string_superfast_new(EINA_FREE_CB(efreet_cache_icon_theme_free)); icons = eina_hash_string_superfast_new(EINA_FREE_CB(efreet_cache_icon_free)); fallbacks = eina_hash_string_superfast_new(EINA_FREE_CB(efreet_cache_icon_fallback_free)); desktops = eina_hash_string_superfast_new(NULL); eldbus_init(); if (efreet_cache_update) { conn = eldbus_connection_get(ELDBUS_CONNECTION_TYPE_SESSION); if (conn) { Eldbus_Object *obj; obj = eldbus_object_get(conn, BUS, PATH); proxy = eldbus_proxy_get(obj, INTERFACE); eldbus_proxy_signal_handler_add(proxy, "IconCacheUpdate", icon_cache_update, NULL); eldbus_proxy_signal_handler_add(proxy, "DesktopCacheUpdate", desktop_cache_update, NULL); eldbus_proxy_call(proxy, "Register", on_send_register, NULL, -1, "s", efreet_language_get()); /* * TODO: Needed? eldbus_name_owner_changed_callback_add(conn, BUS, on_name_owner_changed, conn, EINA_TRUE); */ } else { /* TODO: Run cache process directly */ } } return 1; error: if (themes) eina_hash_free(themes); themes = NULL; if (icons) eina_hash_free(icons); icons = NULL; if (fallbacks) eina_hash_free(fallbacks); fallbacks = NULL; if (desktops) eina_hash_free(desktops); desktops = NULL; efreet_cache_edd_shutdown(); return 0; }