Diff between 8527a218d9b536c7845084d963fe83c205782af2 and d14e0b5ef150e13435f8a44251dfe6fa57447dc5

Changed Files

File Additions Deletions Status
src/shared/bap.c +8 -7 modified

Full Patch

diff --git a/src/shared/bap.c b/src/shared/bap.c
index f2d2ca0..ac17eea 100644
--- a/src/shared/bap.c
+++ b/src/shared/bap.c
@@ -1377,10 +1377,14 @@ static void stream_set_state_broadcast(struct bt_bap_stream *stream,
 	case BT_ASCS_ASE_STATE_IDLE:
 		bap_stream_detach(stream);
 		break;
-	case BT_ASCS_ASE_STATE_RELEASING:
+	case BT_ASCS_ASE_STATE_DISABLING:
 		bap_stream_io_detach(stream);
 		stream_set_state_broadcast(stream, BT_BAP_STREAM_STATE_QOS);
 		break;
+	case BT_ASCS_ASE_STATE_RELEASING:
+		bap_stream_io_detach(stream);
+		stream_set_state_broadcast(stream, BT_BAP_STREAM_STATE_IDLE);
+		break;
 	}
 
 	bt_bap_unref(bap);
@@ -5064,7 +5068,7 @@ unsigned int bt_bap_stream_disable(struct bt_bap_stream *stream,
 
 	case BT_BAP_STREAM_TYPE_BCAST:
 		stream_set_state_broadcast(stream,
-					BT_BAP_STREAM_STATE_RELEASING);
+					BT_BAP_STREAM_STATE_DISABLING);
 		return 1;
 	}
 
@@ -5161,11 +5165,8 @@ unsigned int bt_bap_stream_release(struct bt_bap_stream *stream,
 
 	/* If stream is broadcast, no BT_ASCS_RELEASE is required */
 	if (bt_bap_stream_get_type(stream) == BT_BAP_STREAM_TYPE_BCAST) {
-		if (!bap_stream_valid(stream)) {
-			stream_set_state_broadcast(stream,
-					BT_BAP_STREAM_STATE_IDLE);
-			stream = NULL;
-		}
+		stream_set_state_broadcast(stream,
+					BT_BAP_STREAM_STATE_RELEASING);
 		return 0;
 	}