diff --git a/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/0001-bluetooth-Only-remove-cards-belonging-to-the-device.patch b/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/0001-bluetooth-Only-remove-cards-belonging-to-the-device.patch new file mode 100644 index 000000000..16f2d2062 --- /dev/null +++ b/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/0001-bluetooth-Only-remove-cards-belonging-to-the-device.patch @@ -0,0 +1,37 @@ +From b1057f1a37c10ba23855b2a264491cc4a3b45eca Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Juho=20H=C3=A4m=C3=A4l=C3=A4inen?= + +Date: Fri, 20 Aug 2021 12:55:40 +0300 +Subject: [PATCH] bluetooth: Only remove cards belonging to the device. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Commit f89d64b98e12bb71b6aa94fcef31eafc060f9759 fixed a crash +when disabling adapters. However, now if any device is removed +ofono card is removed, even if it belongs to different device. + +Add a check for the device being unlinked to our callback to fix. + +Signed-off-by: Juho Hämäläinen +Part-of: +--- + src/modules/bluetooth/backend-ofono.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/modules/bluetooth/backend-ofono.c b/src/modules/bluetooth/backend-ofono.c +index 2a212eca03b4..36fe787cf9b1 100644 +--- a/src/modules/bluetooth/backend-ofono.c ++++ b/src/modules/bluetooth/backend-ofono.c +@@ -250,6 +250,9 @@ static pa_hook_result_t device_unlink_cb(pa_bluetooth_discovery *y, const pa_blu + pa_assert(d); + pa_assert(card); + ++ if (d != card->transport->device) ++ return PA_HOOK_OK; ++ + hf_audio_agent_card_removed(card->backend, card->path); + + return PA_HOOK_OK; +-- +2.27.0 diff --git a/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/0002-Revert-bluetooth-Fix-crash-when-disabling-Bluetooth-.patch b/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/0002-Revert-bluetooth-Fix-crash-when-disabling-Bluetooth-.patch deleted file mode 100755 index 671261ab6..000000000 --- a/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/0002-Revert-bluetooth-Fix-crash-when-disabling-Bluetooth-.patch +++ /dev/null @@ -1,94 +0,0 @@ -From 42debd7e749768a7ee76a1a3e3cb4be1a72b089f Mon Sep 17 00:00:00 2001 -From: Shengjiu Wang -Date: Tue, 12 Jan 2021 14:28:24 +0800 -Subject: [PATCH] Revert "bluetooth: Fix crash when disabling Bluetooth - adapter" - -This reverts commit f89d64b98e12bb71b6aa94fcef31eafc060f9759. -When make the bluetooth HFP call, will meet pulseaudio been auto killed issue -this is caused by this patch, revert this patch will fix the pulseaudio been -auto killed issue. - ---- - src/modules/bluetooth/backend-ofono.c | 18 ------------------ - src/modules/bluetooth/bluez5-util.c | 2 -- - src/modules/bluetooth/bluez5-util.h | 1 - - 3 files changed, 21 deletions(-) - -diff --git a/src/modules/bluetooth/backend-ofono.c b/src/modules/bluetooth/backend-ofono.c -index 0e5bbe8b7da4..1f0efe923d23 100644 ---- a/src/modules/bluetooth/backend-ofono.c -+++ b/src/modules/bluetooth/backend-ofono.c -@@ -70,7 +70,6 @@ struct hf_audio_card { - int (*acquire)(struct hf_audio_card *card); - - pa_bluetooth_transport *transport; -- pa_hook_slot *device_unlink_slot; - }; - - struct pa_bluetooth_backend { -@@ -182,17 +181,6 @@ static int card_acquire(struct hf_audio_card *card) { - return -1; - } - --static void hf_audio_agent_card_removed(pa_bluetooth_backend *backend, const char *path); -- --static pa_hook_result_t device_unlink_cb(pa_bluetooth_discovery *y, const pa_bluetooth_device *d, struct hf_audio_card *card) { -- pa_assert(d); -- pa_assert(card); -- -- hf_audio_agent_card_removed(card->backend, card->path); -- -- return PA_HOOK_OK; --} -- - static struct hf_audio_card *hf_audio_card_new(pa_bluetooth_backend *backend, const char *path) { - struct hf_audio_card *card = pa_xnew0(struct hf_audio_card, 1); - -@@ -201,18 +189,12 @@ static struct hf_audio_card *hf_audio_card_new(pa_bluetooth_backend *backend, co - card->fd = -1; - card->acquire = card_acquire; - -- card->device_unlink_slot = pa_hook_connect(pa_bluetooth_discovery_hook(backend->discovery, PA_BLUETOOTH_HOOK_DEVICE_UNLINK), -- PA_HOOK_NORMAL, (pa_hook_cb_t) device_unlink_cb, card); -- - return card; - } - - static void hf_audio_card_free(struct hf_audio_card *card) { - pa_assert(card); - -- if (card->device_unlink_slot) -- pa_hook_slot_free(card->device_unlink_slot); -- - if (card->transport) - pa_bluetooth_transport_free(card->transport); - -diff --git a/src/modules/bluetooth/bluez5-util.c b/src/modules/bluetooth/bluez5-util.c -index a21896ede5f7..4439710d0e7f 100644 ---- a/src/modules/bluetooth/bluez5-util.c -+++ b/src/modules/bluetooth/bluez5-util.c -@@ -562,8 +562,6 @@ static void device_free(pa_bluetooth_device *d) { - - device_stop_waiting_for_profiles(d); - -- pa_hook_fire(&d->discovery->hooks[PA_BLUETOOTH_HOOK_DEVICE_UNLINK], d); -- - for (i = 0; i < PA_BLUETOOTH_PROFILE_COUNT; i++) { - pa_bluetooth_transport *t; - -diff --git a/src/modules/bluetooth/bluez5-util.h b/src/modules/bluetooth/bluez5-util.h -index ff172e0258eb..82739bffd0d8 100644 ---- a/src/modules/bluetooth/bluez5-util.h -+++ b/src/modules/bluetooth/bluez5-util.h -@@ -47,7 +47,6 @@ typedef struct pa_bluetooth_backend pa_bluetooth_backend; - - typedef enum pa_bluetooth_hook { - PA_BLUETOOTH_HOOK_DEVICE_CONNECTION_CHANGED, /* Call data: pa_bluetooth_device */ -- PA_BLUETOOTH_HOOK_DEVICE_UNLINK, /* Call data: pa_bluetooth_device */ - PA_BLUETOOTH_HOOK_TRANSPORT_STATE_CHANGED, /* Call data: pa_bluetooth_transport */ - PA_BLUETOOTH_HOOK_TRANSPORT_MICROPHONE_GAIN_CHANGED, /* Call data: pa_bluetooth_transport */ - PA_BLUETOOTH_HOOK_TRANSPORT_SPEAKER_GAIN_CHANGED, /* Call data: pa_bluetooth_transport */ --- -2.27.0 - diff --git a/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio_%.bbappend b/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio_%.bbappend index ef3ab4cdc..ce932ba93 100644 --- a/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio_%.bbappend +++ b/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio_%.bbappend @@ -28,7 +28,7 @@ AUDIO_HDMI:ccimx6 = "yes" SRC_URI:append = " \ file://0001-Fix-pulseaudio-mutex-issue-when-do-pause-in-gstreame.patch \ - file://0002-Revert-bluetooth-Fix-crash-when-disabling-Bluetooth-.patch \ + file://0001-bluetooth-Only-remove-cards-belonging-to-the-device.patch \ ${@oe.utils.conditional('SOUND_CARD', 'sgtl5000', '${CFG_SGTL5000}', '', d)} \ ${@oe.utils.conditional('SOUND_CARD', 'max98089', '${CFG_MAX98089}', '', d)} \ ${@oe.utils.conditional('AUDIO_HDMI', 'yes', '${CFG_HDMI}', '', d)} \