diff options
author | Johan Hedberg <johan.hedberg@nokia.com> | 2007-05-28 10:32:05 +0000 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@nokia.com> | 2007-05-28 10:32:05 +0000 |
commit | eb5c0bd71f2e1c427ce197f9c94ab9540d305922 (patch) | |
tree | 06977137b3e8ac140581e0d63c61dd5909387dec | |
parent | 0dd153779d22cbce13c03b56b848fac8203b42d7 (diff) |
Use global D-Bus connection for SDP transaction
-rw-r--r-- | audio/manager.c | 41 |
1 files changed, 19 insertions, 22 deletions
diff --git a/audio/manager.c b/audio/manager.c index c15d2f5d..bafc7d9d 100644 --- a/audio/manager.c +++ b/audio/manager.c @@ -58,7 +58,6 @@ typedef enum { struct audio_sdp_data { audio_device_t *device; - DBusConnection *conn; DBusMessage *msg; GSList *handles; @@ -363,7 +362,7 @@ static void finish_sdp(struct audio_sdp_data *data, gboolean success) debug("Audio service discovery completed with %s", success ? "success" : "failure"); - finish_sdp_transaction(data->conn, &data->device->bda); + finish_sdp_transaction(connection, &data->device->bda); if (!success) goto done; @@ -371,7 +370,7 @@ static void finish_sdp(struct audio_sdp_data *data, gboolean success) reply = dbus_message_new_method_return(data->msg); if (!reply) { success = FALSE; - err_failed(data->conn, data->msg, "Out of memory"); + err_failed(connection, data->msg, "Out of memory"); goto done; } @@ -380,7 +379,7 @@ static void finish_sdp(struct audio_sdp_data *data, gboolean success) add_device(data->device); g_slist_foreach(data->records, (GFunc) handle_record, data->device); - dbus_connection_emit_signal(data->conn, AUDIO_MANAGER_PATH, + dbus_connection_emit_signal(connection, AUDIO_MANAGER_PATH, AUDIO_MANAGER_INTERFACE, "DeviceCreated", DBUS_TYPE_STRING, &path, @@ -388,12 +387,11 @@ static void finish_sdp(struct audio_sdp_data *data, gboolean success) dbus_message_append_args(reply, DBUS_TYPE_STRING, &path, DBUS_TYPE_INVALID); - send_message_and_unref(data->conn, reply); + send_message_and_unref(connection, reply); done: if (!success) free_device(data->device); - dbus_connection_unref(data->conn); dbus_message_unref(data->msg); g_slist_foreach(data->handles, (GFunc) g_free, NULL); g_slist_free(data->handles); @@ -418,9 +416,9 @@ static void get_record_reply(DBusPendingCall *call, error("GetRemoteServiceRecord failed: %s", derr.message); if (dbus_error_has_name(&derr, "org.bluez.Error.ConnectionAttemptFailed")) - err_connect_failed(data->conn, data->msg, EHOSTDOWN); + err_connect_failed(connection, data->msg, EHOSTDOWN); else - err_failed(data->conn, data->msg, derr.message); + err_failed(connection, data->msg, derr.message); dbus_error_free(&derr); goto failed; } @@ -428,7 +426,7 @@ static void get_record_reply(DBusPendingCall *call, if (!dbus_message_get_args(reply, NULL, DBUS_TYPE_ARRAY, DBUS_TYPE_BYTE, &array, &array_len, DBUS_TYPE_INVALID)) { - err_failed(data->conn, data->msg, + err_failed(connection, data->msg, "Unable to get args from GetRecordReply"); goto failed; } @@ -473,7 +471,7 @@ static void get_next_record(struct audio_sdp_data *data) "GetRemoteServiceRecord"); if (!msg) { error("Unable to allocate new method call"); - err_connect_failed(data->conn, data->msg, ENOMEM); + err_connect_failed(connection, data->msg, ENOMEM); finish_sdp(data, FALSE); return; } @@ -490,9 +488,9 @@ static void get_next_record(struct audio_sdp_data *data) g_free(handle); - if (!dbus_connection_send_with_reply(data->conn, msg, &pending, -1)) { + if (!dbus_connection_send_with_reply(connection, msg, &pending, -1)) { error("Sending GetRemoteServiceRecord failed"); - err_connect_failed(data->conn, data->msg, EIO); + err_connect_failed(connection, data->msg, EIO); finish_sdp(data, FALSE); return; } @@ -530,9 +528,9 @@ static void get_handles_reply(DBusPendingCall *call, error("GetRemoteServiceHandles failed: %s", derr.message); if (dbus_error_has_name(&derr, "org.bluez.Error.ConnectionAttemptFailed")) - err_connect_failed(data->conn, data->msg, EHOSTDOWN); + err_connect_failed(connection, data->msg, EHOSTDOWN); else - err_failed(data->conn, data->msg, derr.message); + err_failed(connection, data->msg, derr.message); dbus_error_free(&derr); goto failed; } @@ -541,7 +539,7 @@ static void get_handles_reply(DBusPendingCall *call, DBUS_TYPE_ARRAY, DBUS_TYPE_UINT32, &array, &array_len, DBUS_TYPE_INVALID)) { - err_failed(data->conn, data->msg, + err_failed(connection, data->msg, "Unable to get args from reply"); goto failed; } @@ -591,7 +589,7 @@ static DBusHandlerResult get_handles(const char *uuid, "org.bluez.Adapter", "GetRemoteServiceHandles"); if (!msg) { - err_failed(data->conn, data->msg, + err_failed(connection, data->msg, "Could not create a new dbus message"); goto failed; } @@ -603,7 +601,7 @@ static DBusHandlerResult get_handles(const char *uuid, DBUS_TYPE_INVALID); if (!dbus_connection_send_with_reply(connection, msg, &pending, -1)) { - err_failed(data->conn, data->msg, + err_failed(connection, data->msg, "Sending GetRemoteServiceHandles failed"); goto failed; } @@ -623,15 +621,14 @@ failed: return DBUS_HANDLER_RESULT_HANDLED; } -static DBusHandlerResult resolve_services(DBusConnection *conn, - DBusMessage *msg, +static DBusHandlerResult resolve_services(DBusMessage *msg, audio_device_t *device) { struct audio_sdp_data *sdp_data; sdp_data = g_new0(struct audio_sdp_data, 1); - sdp_data->msg = dbus_message_ref(msg); - sdp_data->conn = dbus_connection_ref(conn); + if (msg) + sdp_data->msg = dbus_message_ref(msg); sdp_data->device = device; return get_handles(GENERIC_AUDIO_UUID, sdp_data); @@ -722,7 +719,7 @@ static DBusHandlerResult am_create_device(DBusConnection *conn, DBusMessage *msg device = create_device(&bda); - return resolve_services(conn, msg, device); + return resolve_services(msg, device); } static DBusHandlerResult am_list_devices(DBusConnection *conn, |