summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Pelly <>2009-03-24 19:52:15 -0700
committerThe Android Open Source Project <initial-contribution@android.com>2009-03-24 19:52:15 -0700
commit0cc23751000ae5e829be623279b592b293c5238d (patch)
tree39b68a010613309b332ee394b531cfe20efd3b2c
parentf8b34f1795a98164af2992661ee372502704e93f (diff)
downloadbluez-0cc23751000ae5e829be623279b592b293c5238d.tar.gz
Automated import from //branches/donutburger/...@141219,141219
-rw-r--r--utils/audio/avdtp.c2
-rw-r--r--utils/audio/sink.c23
-rw-r--r--utils/audio/sink.h3
3 files changed, 16 insertions, 12 deletions
diff --git a/utils/audio/avdtp.c b/utils/audio/avdtp.c
index 5e74b7e1..4710e66a 100644
--- a/utils/audio/avdtp.c
+++ b/utils/audio/avdtp.c
@@ -589,7 +589,7 @@ static gboolean disconnect_timeout(gpointer user_data)
dev = manager_find_device(&session->dst, AUDIO_CONTROL_INTERFACE, FALSE);
if (dev && dev->sink && stream_setup)
- sink_setup_stream(dev->sink, session);
+ sink_setup_stream(dev->sink, session, NULL, NULL);
else
connection_lost(session, -ETIMEDOUT);
return FALSE;
diff --git a/utils/audio/sink.c b/utils/audio/sink.c
index d25a91a3..f95d23af 100644
--- a/utils/audio/sink.c
+++ b/utils/audio/sink.c
@@ -394,18 +394,26 @@ failed:
sink->session = NULL;
}
-gboolean sink_setup_stream(struct sink *sink, struct avdtp *session)
+gboolean sink_setup_stream(struct sink *sink, struct avdtp *session,
+ DBusConnection *conn, DBusMessage *msg)
{
+ struct pending_request *pending;
+
if (sink->connect || sink->disconnect)
return FALSE;
if (session && !sink->session)
sink->session = avdtp_ref(session);
- if (avdtp_discover(sink->session, discovery_complete, sink) < 0)
- return FALSE;
+ pending = g_new0(struct pending_request, 1);
+ pending->conn = dbus_connection_ref(conn);
+ pending->msg = dbus_message_ref(msg);
+ sink->connect = pending;
- sink->connect = g_new0(struct pending_request, 1);
+ if (avdtp_discover(sink->session, discovery_complete, sink) < 0) {
+ pending_request_free(pending);
+ return FALSE;
+ }
return TRUE;
}
@@ -415,7 +423,6 @@ static DBusMessage *sink_connect(DBusConnection *conn,
{
struct audio_device *dev = data;
struct sink *sink = dev->sink;
- struct pending_request *pending;
if (!sink->session)
sink->session = avdtp_get(&dev->src, &dev->dst);
@@ -433,14 +440,10 @@ static DBusMessage *sink_connect(DBusConnection *conn,
".AlreadyConnected",
"Device Already Connected");
- if (!sink_setup_stream(sink, NULL))
+ if (!sink_setup_stream(sink, NULL, conn, msg))
return g_dbus_create_error(msg, ERROR_INTERFACE ".FAILED",
"Failed to create a stream");
- pending = sink->connect;
- pending->conn = dbus_connection_ref(conn);
- pending->msg = dbus_message_ref(msg);
-
debug("stream creation in progress");
return NULL;
diff --git a/utils/audio/sink.h b/utils/audio/sink.h
index 7adfa958..26eecd31 100644
--- a/utils/audio/sink.h
+++ b/utils/audio/sink.h
@@ -30,4 +30,5 @@ gboolean sink_is_active(struct audio_device *dev);
avdtp_state_t sink_get_state(struct audio_device *dev);
gboolean sink_new_stream(struct audio_device *dev, struct avdtp *session,
struct avdtp_stream *stream);
-gboolean sink_setup_stream(struct sink *sink, struct avdtp *session);
+gboolean sink_setup_stream(struct sink *sink, struct avdtp *session,
+ DBusConnection *conn, DBusMessage *msg);