forked from enlightenment/efl
Add a new API to edbus to let it create an EDbus session from
an existing DBus connection. This is needed by the python bindings, was done the same way in edbus1, so it should fit here also NOTE: I did not test this yet, and I'm not into the edbus code, so I please who know the code to give a look. thanks NOTE2: I don't think this need Changelog and stuff as we are probably the only users of this function, let me know if i'm wrong
This commit is contained in:
parent
5dc2d7c126
commit
8ecd30d578
|
@ -58,6 +58,17 @@ EAPI EDBus_Connection *edbus_connection_ref(EDBus_Connection *conn) EINA_ARG_NON
|
|||
*/
|
||||
EAPI void edbus_connection_unref(EDBus_Connection *conn) EINA_ARG_NONNULL(1);
|
||||
|
||||
/**
|
||||
* Integrate an existing DBus connection with the ecore main loop
|
||||
*
|
||||
* @param type - type of bus
|
||||
* @param conn - a dbus connection (must be a DBusConnection *)
|
||||
*
|
||||
* @note this is a low-level function, it is meant to be used by language
|
||||
* bindings, don't use unless you know what are you doing!
|
||||
*/
|
||||
EAPI EDBus_Connection *edbus_connection_from_dbus_connection(EDBus_Connection_Type type, void *conn);
|
||||
|
||||
/**
|
||||
* @brief Add a callback function to be called when connection is freed
|
||||
*
|
||||
|
|
|
@ -975,6 +975,34 @@ _connection_get(EDBus_Connection_Type type)
|
|||
return conn;
|
||||
}
|
||||
|
||||
EAPI EDBus_Connection *
|
||||
edbus_connection_from_dbus_connection(EDBus_Connection_Type type, void *conn)
|
||||
{
|
||||
EDBus_Connection *econn;
|
||||
EDBus_Object *obj;
|
||||
|
||||
EINA_SAFETY_ON_FALSE_RETURN_VAL((type < EDBUS_CONNECTION_TYPE_LAST) &&
|
||||
(type > EDBUS_CONNECTION_TYPE_UNKNOWN), NULL);
|
||||
|
||||
econn = calloc(1, sizeof(EDBus_Connection));
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(econn, NULL);
|
||||
|
||||
econn->dbus_conn = (DBusConnection*) conn;
|
||||
edbus_connection_setup(econn);
|
||||
econn->type = type;
|
||||
econn->refcount = 1;
|
||||
EINA_MAGIC_SET(econn, EDBUS_CONNECTION_MAGIC);
|
||||
econn->names = eina_hash_string_superfast_new(NULL);
|
||||
|
||||
edbus_signal_handler_add(econn, NULL, DBUS_PATH_LOCAL, DBUS_INTERFACE_LOCAL,
|
||||
"Disconnected", _disconnected, econn);
|
||||
obj = edbus_object_get(econn, EDBUS_FDO_BUS, EDBUS_FDO_PATH);
|
||||
econn->fdo_proxy = edbus_proxy_get(obj, EDBUS_FDO_INTERFACE);
|
||||
|
||||
DBG("Attached to connection at %p", conn);
|
||||
return econn;
|
||||
}
|
||||
|
||||
EAPI EDBus_Connection *
|
||||
edbus_private_connection_get(EDBus_Connection_Type type)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue