bluetooth: Check return value of init_profile()

If profile could not be successfully initialized, the card should be
set to PROFILE_OFF automatically. If sinks or sources exist, they need
to be destroyed, therefore stop_thread() is called.
This commit is contained in:
Mikel Astiz 2012-10-19 10:11:22 +02:00 committed by Tanu Kaskinen
parent 8b1236531e
commit fcfc0e536a

View file

@ -2229,12 +2229,20 @@ static int card_set_profile(pa_card *c, pa_card_profile *new_profile) {
save_sco_volume_callbacks(u);
if (u->profile != PROFILE_OFF)
init_profile(u);
if (init_profile(u) < 0)
goto off;
if (u->sink || u->source)
start_thread(u);
return 0;
off:
stop_thread(u);
pa_assert_se(pa_card_set_profile(u->card, "off", false) >= 0);
return -PA_ERR_IO;
}
static void create_ports_for_profile(struct userdata *u, const pa_bluetooth_device *device, pa_card_new_data *card_new_data, pa_card_profile *profile) {