From: Mikel Astiz Date: Thu, 16 Aug 2012 11:08:29 +0000 (+0200) Subject: bluetooth: Fix missing state checks for a2dp_source X-Git-Tag: accepted/2.0alpha/20121211.011210~33 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=459d6853ab8803591a01b3295f7b9ad104e1f2d9;p=profile%2Fivi%2Fpulseaudio.git bluetooth: Fix missing state checks for a2dp_source Profile a2dp_source, just like any other card profile, should have state guards when the profile is being changed. If the BlueZ interface is not connected, the profile should be set to "off". --- diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c index 86cd40c..7066a7a 100644 --- a/src/modules/bluetooth/module-bluetooth-device.c +++ b/src/modules/bluetooth/module-bluetooth-device.c @@ -1972,7 +1972,10 @@ static int card_set_profile(pa_card *c, pa_card_profile *new_profile) { pa_log_warn("HSP is not connected, refused to switch profile"); return -PA_ERR_IO; } else if (device->audio_sink_state < PA_BT_AUDIO_STATE_CONNECTED && *d == PROFILE_A2DP) { - pa_log_warn("A2DP is not connected, refused to switch profile"); + pa_log_warn("A2DP Sink is not connected, refused to switch profile"); + return -PA_ERR_IO; + } else if (device->audio_source_state < PA_BT_AUDIO_STATE_CONNECTED && *d == PROFILE_A2DP_SOURCE) { + pa_log_warn("A2DP Source is not connected, refused to switch profile"); return -PA_ERR_IO; } else if (device->hfgw_state < PA_BT_AUDIO_STATE_CONNECTED && *d == PROFILE_HFGW) { pa_log_warn("HandsfreeGateway is not connected, refused to switch profile"); @@ -2230,6 +2233,7 @@ static int add_card(struct userdata *u, const pa_bluetooth_device *device) { if ((device->headset_state < PA_BT_AUDIO_STATE_CONNECTED && *d == PROFILE_HSP) || (device->audio_sink_state < PA_BT_AUDIO_STATE_CONNECTED && *d == PROFILE_A2DP) || + (device->audio_source_state < PA_BT_AUDIO_STATE_CONNECTED && *d == PROFILE_A2DP_SOURCE) || (device->hfgw_state < PA_BT_AUDIO_STATE_CONNECTED && *d == PROFILE_HFGW)) { pa_log_warn("Default profile not connected, selecting off profile"); u->card->active_profile = pa_hashmap_get(u->card->profiles, "off");