Diff between 606b5e7054bbb5128f2fe000c2736efe475f2b9f and 449381885f9ea3424bb721d7c9930d5b5a45a6c3

Changed Files

File Additions Deletions Status
android/handsfree.c +11 -14 modified

Full Patch

diff --git a/android/handsfree.c b/android/handsfree.c
index ba798ee..7cdc8b4 100644
--- a/android/handsfree.c
+++ b/android/handsfree.c
@@ -968,24 +968,21 @@ static void connect_sco_cb(enum sco_status status, const bdaddr_t *addr)
 		return;
 	}
 
-	if (status != SCO_STATUS_OK) {
-		error("handsfree: audio connect failed");
-
-		set_audio_state(dev, HAL_EV_HANDSFREE_AUDIO_STATE_DISCONNECTED);
-
-		if (!codec_negotiation_supported(dev))
-			return;
-
-		/* If other failed, try connecting with CVSD */
-		if (dev->negotiated_codec != CODEC_ID_CVSD) {
-			info("handsfree: trying fallback with CVSD");
-			select_codec(dev, CODEC_ID_CVSD);
-		}
+	if (status == SCO_STATUS_OK) {
+		set_audio_state(dev, HAL_EV_HANDSFREE_AUDIO_STATE_CONNECTED);
+		return;
+	}
 
+	/* Try fallback to CVSD first */
+	if (codec_negotiation_supported(dev) &&
+				dev->negotiated_codec != CODEC_ID_CVSD) {
+		info("handsfree: trying fallback with CVSD");
+		select_codec(dev, CODEC_ID_CVSD);
 		return;
 	}
 
-	set_audio_state(dev, HAL_EV_HANDSFREE_AUDIO_STATE_CONNECTED);
+	error("handsfree: audio connect failed");
+	set_audio_state(dev, HAL_EV_HANDSFREE_AUDIO_STATE_DISCONNECTED);
 }
 
 static bool connect_sco(struct hf_device *dev)