[PATCH] bluez5-device: lower sink/source priority for Audio gateway or a2dp source

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, 2017-09-02 at 21:46 +0200, Georg Chini wrote:
> When a phone is connected via bluetooth and switches to HFP, the sinks
> and sources will have higher priority than the built-in devices.
> Therefore they are chosen as default and module-bluetooth-policy will
> incorrectly insert loopback modules that loop the phone back to itself.
> 
> This patch fixes the problem by lowering the priority of sink and source
> if PulseAudio is in the headset role. The priority is also lowered if the
> device is an a2dp source. In both cases it does not make sense to make the
> source or sink default unless there is no other sound device available.
> ---
>  src/modules/bluetooth/module-bluez5-device.c | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/src/modules/bluetooth/module-bluez5-device.c b/src/modules/bluetooth/module-bluez5-device.c
> index 12a49848..c0e681b1 100644
> --- a/src/modules/bluetooth/module-bluez5-device.c
> +++ b/src/modules/bluetooth/module-bluez5-device.c
> @@ -1607,6 +1607,12 @@ static int start_thread(struct userdata *u) {
>      if (u->sink) {
>          pa_sink_set_asyncmsgq(u->sink, u->thread_mq.inq);
>          pa_sink_set_rtpoll(u->sink, u->rtpoll);
> +
> +        /* If we are in the headset role, the sink should not become default
> +         * unless there is no other sound device available. */
> +        if (u->profile == PA_BLUETOOTH_PROFILE_HEADSET_AUDIO_GATEWAY)
> +            u->sink->priority = 1500;
> +
>          pa_sink_put(u->sink);
>  
>          if (u->sink->set_volume)
> @@ -1616,6 +1622,13 @@ static int start_thread(struct userdata *u) {
>      if (u->source) {
>          pa_source_set_asyncmsgq(u->source, u->thread_mq.inq);
>          pa_source_set_rtpoll(u->source, u->rtpoll);
> +
> +        /* If we are in the headset role or the device is an a2dp source,
> +         * the source should not become default unless there is no other
> +         * sound device available. */
> +        if (u->profile == PA_BLUETOOTH_PROFILE_HEADSET_AUDIO_GATEWAY || u->profile == PA_BLUETOOTH_PROFILE_A2DP_SOURCE)
> +            u->source->priority = 1500;
> +
>          pa_source_put(u->source);
>  
>          if (u->source->set_volume)

Thanks! Applied.

-- 
Tanu

https://www.patreon.com/tanuk


[Index of Archives]     [Linux Audio Users]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux