From 57013cfa0d58ec03b5cd3a3dce7a884dec9c43c6 Mon Sep 17 00:00:00 2001 From: Forrest Zhao Date: Wed, 27 Jan 2010 16:24:23 +0800 Subject: Introduce g_dbus_setup_private() to gdbus g_dbus_setup_private() is used to setup private DBusConnection --- gdbus/mainloop.c | 65 ++++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 52 insertions(+), 13 deletions(-) (limited to 'gdbus/mainloop.c') diff --git a/gdbus/mainloop.c b/gdbus/mainloop.c index b8be0440..80c61b79 100644 --- a/gdbus/mainloop.c +++ b/gdbus/mainloop.c @@ -262,11 +262,36 @@ static inline void setup_dbus_with_main_loop(DBusConnection *conn) NULL, NULL); } +static gboolean setup_bus(DBusConnection *conn, const char *name, + DBusError *error) +{ + gboolean result; + DBusDispatchStatus status; + + if (name != NULL) { + result = g_dbus_request_name(conn, name, error); + + if (error != NULL) { + if (dbus_error_is_set(error) == TRUE) + return FALSE; + } + + if (result == FALSE) + return FALSE; + } + + setup_dbus_with_main_loop(conn); + + status = dbus_connection_get_dispatch_status(conn); + queue_dispatch(conn, status); + + return TRUE; +} + DBusConnection *g_dbus_setup_bus(DBusBusType type, const char *name, DBusError *error) { DBusConnection *conn; - DBusDispatchStatus status; gboolean result; conn = dbus_bus_get(type, error); @@ -279,24 +304,38 @@ DBusConnection *g_dbus_setup_bus(DBusBusType type, const char *name, if (conn == NULL) return NULL; - if (name != NULL) { - result = g_dbus_request_name(conn, name, error); + result = setup_bus(conn, name, error); - if (error != NULL) { - if (dbus_error_is_set(error) == TRUE) - result = FALSE; - } + if (result == FALSE) { + dbus_connection_unref(conn); + return NULL; + } + + return conn; +} + +DBusConnection *g_dbus_setup_private(DBusBusType type, const char *name, + DBusError *error) +{ + DBusConnection *conn; + gboolean result; - if (result == FALSE) { - dbus_connection_unref(conn); + conn = dbus_bus_get_private(type, error); + + if (error != NULL) { + if (dbus_error_is_set(error) == TRUE) return NULL; - } } - setup_dbus_with_main_loop(conn); + if (conn == NULL) + return NULL; - status = dbus_connection_get_dispatch_status(conn); - queue_dispatch(conn, status); + result = setup_bus(conn, name, error); + + if (result == FALSE) { + dbus_connection_unref(conn); + return NULL; + } return conn; } -- cgit v1.2.3