Diff between a7cb2d44000b2ec33df1da88c3feef006b20d711 and 52faac4648500dd45c06b6aa41f1be426c43a125

Changed Files

File Additions Deletions Status
profiles/audio/sink.c +12 -13 modified
profiles/audio/source.c +12 -13 modified

Full Patch

diff --git a/profiles/audio/sink.c b/profiles/audio/sink.c
index 7cac210..9664405 100644
--- a/profiles/audio/sink.c
+++ b/profiles/audio/sink.c
@@ -256,11 +256,18 @@ gboolean sink_setup_stream(struct btd_service *service, struct avdtp *session)
 	if (sink->connect_id > 0 || sink->disconnect_id > 0)
 		return FALSE;
 
-	if (session && !sink->session)
-		sink->session = avdtp_ref(session);
-
-	if (!sink->session)
-		return FALSE;
+	if (!sink->session) {
+		if (session)
+			sink->session = avdtp_ref(session);
+		else
+			sink->session = a2dp_avdtp_get(
+					btd_service_get_device(service));
+
+		if (!sink->session) {
+			DBG("Unable to get a session");
+			return FALSE;
+		}
+	}
 
 	sink->connect_id = a2dp_discover(sink->session, discovery_complete,
 								sink);
@@ -274,14 +281,6 @@ int sink_connect(struct btd_service *service)
 {
 	struct sink *sink = btd_service_get_user_data(service);
 
-	if (!sink->session)
-		sink->session = a2dp_avdtp_get(btd_service_get_device(service));
-
-	if (!sink->session) {
-		DBG("Unable to get a session");
-		return -EIO;
-	}
-
 	if (sink->connect_id > 0 || sink->disconnect_id > 0)
 		return -EBUSY;
 
diff --git a/profiles/audio/source.c b/profiles/audio/source.c
index 4081e19..0ac20fe 100644
--- a/profiles/audio/source.c
+++ b/profiles/audio/source.c
@@ -257,11 +257,18 @@ gboolean source_setup_stream(struct btd_service *service,
 	if (source->connect_id > 0 || source->disconnect_id > 0)
 		return FALSE;
 
-	if (session && !source->session)
-		source->session = avdtp_ref(session);
-
-	if (!source->session)
-		return FALSE;
+	if (!source->session) {
+		if (session)
+			source->session = avdtp_ref(session);
+		else
+			source->session = a2dp_avdtp_get(
+					btd_service_get_device(service));
+
+		if (!source->session) {
+			DBG("Unable to get a session");
+			return FALSE;
+		}
+	}
 
 	source->connect_id = a2dp_discover(source->session, discovery_complete,
 								source);
@@ -275,14 +282,6 @@ int source_connect(struct btd_service *service)
 {
 	struct source *source = btd_service_get_user_data(service);
 
-	if (!source->session)
-		source->session = a2dp_avdtp_get(btd_service_get_device(service));
-
-	if (!source->session) {
-		DBG("Unable to get a session");
-		return -EIO;
-	}
-
 	if (source->connect_id > 0 || source->disconnect_id > 0)
 		return -EBUSY;