mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-04 13:30:12 -05:00
bluez5: close sco socket if bluetooth daemon disappeared
Fixes pipewire/pipewire#853
This commit is contained in:
parent
e2ac16ccbd
commit
d6be84ddd0
2 changed files with 13 additions and 1 deletions
|
|
@ -1387,7 +1387,7 @@ void backend_native_register_profiles(struct spa_bt_backend *backend)
|
||||||
sco_listen(backend);
|
sco_listen(backend);
|
||||||
}
|
}
|
||||||
|
|
||||||
void backend_native_unregister_profiles(struct spa_bt_backend *backend)
|
void sco_close(struct spa_bt_backend *backend)
|
||||||
{
|
{
|
||||||
if (backend->sco.fd >= 0) {
|
if (backend->sco.fd >= 0) {
|
||||||
if (backend->sco.loop)
|
if (backend->sco.loop)
|
||||||
|
|
@ -1396,6 +1396,11 @@ void backend_native_unregister_profiles(struct spa_bt_backend *backend)
|
||||||
close (backend->sco.fd);
|
close (backend->sco.fd);
|
||||||
backend->sco.fd = -1;
|
backend->sco.fd = -1;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void backend_native_unregister_profiles(struct spa_bt_backend *backend)
|
||||||
|
{
|
||||||
|
sco_close(backend);
|
||||||
|
|
||||||
#ifdef HAVE_BLUEZ_5_BACKEND_HSP_NATIVE
|
#ifdef HAVE_BLUEZ_5_BACKEND_HSP_NATIVE
|
||||||
if (backend->enabled_profiles & SPA_BT_PROFILE_HSP_AG)
|
if (backend->enabled_profiles & SPA_BT_PROFILE_HSP_AG)
|
||||||
|
|
@ -1416,6 +1421,8 @@ void backend_native_free(struct spa_bt_backend *backend)
|
||||||
{
|
{
|
||||||
struct rfcomm *rfcomm;
|
struct rfcomm *rfcomm;
|
||||||
|
|
||||||
|
sco_close(backend);
|
||||||
|
|
||||||
#ifdef HAVE_BLUEZ_5_BACKEND_HSP_NATIVE
|
#ifdef HAVE_BLUEZ_5_BACKEND_HSP_NATIVE
|
||||||
dbus_connection_unregister_object_path(backend->conn, PROFILE_HSP_AG);
|
dbus_connection_unregister_object_path(backend->conn, PROFILE_HSP_AG);
|
||||||
dbus_connection_unregister_object_path(backend->conn, PROFILE_HSP_HS);
|
dbus_connection_unregister_object_path(backend->conn, PROFILE_HSP_HS);
|
||||||
|
|
|
||||||
|
|
@ -2917,6 +2917,11 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *m, void *us
|
||||||
spa_log_debug(monitor->log, "Bluetooth daemon disappeared");
|
spa_log_debug(monitor->log, "Bluetooth daemon disappeared");
|
||||||
monitor->objects_listed = false;
|
monitor->objects_listed = false;
|
||||||
|
|
||||||
|
if (monitor->backend_native_registered) {
|
||||||
|
backend_native_unregister_profiles(monitor->backend_native);
|
||||||
|
monitor->backend_native_registered = false;
|
||||||
|
}
|
||||||
|
|
||||||
spa_list_consume(t, &monitor->transport_list, link)
|
spa_list_consume(t, &monitor->transport_list, link)
|
||||||
spa_bt_transport_free(t);
|
spa_bt_transport_free(t);
|
||||||
spa_list_consume(ep, &monitor->remote_endpoint_list, link)
|
spa_list_consume(ep, &monitor->remote_endpoint_list, link)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue