bluez5: release transports on profile change

SCO transports have timer-delayed release, but they need to be released
immediately when changing profiles to close connections before switching
to A2DP.
This commit is contained in:
Pauli Virtanen 2021-03-08 23:39:01 +02:00
parent 6fd870a5f0
commit 511bafb436
3 changed files with 25 additions and 0 deletions

View file

@ -1184,6 +1184,28 @@ int spa_bt_transport_release(struct spa_bt_transport *transport)
return res;
}
static int spa_bt_transport_release_now(struct spa_bt_transport *transport)
{
int res;
if (transport->acquire_refcount == 0)
return 0;
spa_bt_transport_stop_release_timer(transport);
res = spa_bt_transport_impl(transport, release, 0);
if (res >= 0)
transport->acquire_refcount = 0;
return res;
}
int spa_bt_device_release_transports(struct spa_bt_device *device)
{
struct spa_bt_transport *t;
spa_list_for_each(t, &device->transport_list, device_link)
spa_bt_transport_release_now(t);
}
static void spa_bt_transport_release_timer_event(struct spa_source *source)
{
struct spa_bt_transport *transport = source->data;