[PATCH BlueZ v2 2/2] transport: Fix the use of callback in transport_asha_suspend

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Some devices do not send a response to the stop command, so
audio status notification might not be received after stop.

Instead, as with the Android implementation, we just immediately
acknowledge the client's stop request after sending it to the device.
---
 profiles/audio/transport.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/profiles/audio/transport.c b/profiles/audio/transport.c
index c5ae3a71b..153515191 100644
--- a/profiles/audio/transport.c
+++ b/profiles/audio/transport.c
@@ -2295,42 +2295,49 @@ static void asha_transport_state_cb(int status, void *user_data)
 			media_request_reply(owner->pending, 0);
 			media_owner_remove(owner);
 		}
 
 		media_transport_remove_owner(transport);
 	}
 
 	asha_transport_sync_state(transport, asha_dev);
 }
 
+static gboolean asha_transport_suspend_cb(void *user_data)
+{
+	asha_transport_state_cb(-1, user_data);
+
+	return FALSE;
+}
+
 static guint transport_asha_resume(struct media_transport *transport,
 						struct media_owner *owner)
 {
 	struct bt_asha_device *asha_dev = transport->data;
 	guint ret;
 
 	ret = bt_asha_device_start(asha_dev, asha_transport_state_cb, owner);
 	asha_transport_sync_state(transport, asha_dev);
 
 	return ret > 0 ? ret : 0;
 }
 
 static guint transport_asha_suspend(struct media_transport *transport,
 						struct media_owner *owner)
 {
 	struct bt_asha_device *asha_dev = transport->data;
 	guint ret = 0;
 
 	if (owner) {
 		ret = bt_asha_device_stop(asha_dev);
 		asha_transport_sync_state(transport, asha_dev);
-		asha_transport_state_cb(-1, owner);
+		g_idle_add(asha_transport_suspend_cb, owner);
 	} else {
 		ret = bt_asha_device_stop(asha_dev);
 		/* We won't have a callback to set the final state */
 		transport_set_state(transport, TRANSPORT_STATE_IDLE);
 	}
 
 	return ret;
 }
 
 static void transport_asha_cancel(struct media_transport *transport, guint id)
-- 
2.49.0





[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux