OSDN Git Service

Automated import from //branches/donutburger/...@141219,141219
authorNick Pelly <>
Wed, 25 Mar 2009 02:52:15 +0000 (19:52 -0700)
committerThe Android Open Source Project <initial-contribution@android.com>
Wed, 25 Mar 2009 02:52:15 +0000 (19:52 -0700)
utils/audio/avdtp.c
utils/audio/sink.c
utils/audio/sink.h

index 5e74b7e..4710e66 100644 (file)
@@ -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;
index d25a91a..f95d23a 100644 (file)
@@ -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;
index 7adfa95..26eecd3 100644 (file)
@@ -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);