[PATCH v4 36/41] bluetooth: Handle changes to BlueZ 5 transports state

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

 



On Wed, Sep 25, 2013 at 7:18 AM, Tanu Kaskinen
<tanu.kaskinen at linux.intel.com> wrote:
> On Tue, 2013-09-24 at 16:02 -0300, Jo?o Paulo Rechi Vita wrote:
>> On Sat, Sep 21, 2013 at 11:50 AM, Tanu Kaskinen
>> <tanu.kaskinen at linux.intel.com> wrote:
>> > On Wed, 2013-09-18 at 16:17 -0500, jprvita at gmail.com wrote:
>> >> From: Jo?o Paulo Rechi Vita <jprvita at openbossa.org>
>> >>
>> >> ---
>> >>  src/modules/bluetooth/module-bluez5-device.c | 78 ++++++++++++++++++++++++++++
>> >>  1 file changed, 78 insertions(+)
>> >>
>> >> diff --git a/src/modules/bluetooth/module-bluez5-device.c b/src/modules/bluetooth/module-bluez5-device.c
>> >> index d9e1fc6..2eaeb77 100644
>> >> --- a/src/modules/bluetooth/module-bluez5-device.c
>> >> +++ b/src/modules/bluetooth/module-bluez5-device.c
>> >> @@ -97,6 +97,7 @@ struct userdata {
>> >>      pa_core *core;
>> >>
>> >>      pa_hook_slot *device_connection_changed_slot;
>> >> +    pa_hook_slot *transport_state_changed_slot;
>> >>
>> >>      pa_bluetooth_discovery *discovery;
>> >>      pa_bluetooth_device *device;
>> >> @@ -1670,6 +1671,62 @@ static int add_card(struct userdata *u) {
>> >>  }
>> >>
>> >>  /* Run from main thread */
>> >> +static void handle_transport_state_change(struct userdata *u, struct pa_bluetooth_transport *t) {
>> >> +    bool acquire = false;
>> >> +    bool release = false;
>> >> +    pa_card_profile *cp;
>> >> +    pa_device_port *port;
>> >> +
>> >> +    pa_assert(u);
>> >> +    pa_assert(t);
>> >> +
>> >> +    /* Update profile availability */
>> >> +    if (!(cp = pa_hashmap_get(u->card->profiles, pa_bluetooth_profile_to_string(t->profile))))
>> >> +        return;
>> >> +    pa_card_profile_set_available(cp, transport_state_to_availability(t->state));
>> >> +
>> >> +    /* Update port availability */
>> >> +    pa_assert_se(port = pa_hashmap_get(u->card->ports, u->output_port_name));
>> >> +    pa_device_port_set_available(port, get_port_availability(u, PA_DIRECTION_OUTPUT));
>> >> +    pa_assert_se(port = pa_hashmap_get(u->card->ports, u->input_port_name));
>> >> +    pa_device_port_set_available(port, get_port_availability(u, PA_DIRECTION_INPUT));
>> >> +
>> >> +    /* Acquire or release transport as needed */
>> >> +    acquire = (t->state == PA_BLUETOOTH_TRANSPORT_STATE_PLAYING && u->profile == t->profile);
>> >> +    release = (t->state != PA_BLUETOOTH_TRANSPORT_STATE_PLAYING && u->profile == t->profile);
>> >> +
>> >> +    if (acquire && transport_acquire(u, true) >= 0) {
>> >> +        if (u->source) {
>> >> +            pa_log_debug("Resuming source %s because its transport state changed to playing", u->source->name);
>> >> +            pa_source_suspend(u->source, false, PA_SUSPEND_IDLE|PA_SUSPEND_USER);
>> >
>> > This is now the third time I ask you to add the following comment:
>> >
>> > /* We remove the IDLE suspend cause, because otherwise module-loopback
>> > doesn't uncork its streams. FIXME: Messing with the IDLE suspend cause
>> > here is wrong, the correct way to handle this would probably be to
>> > uncork the loopback streams not only when the other end is unsuspended,
>> > but also when the other end's suspend cause changes to IDLE only
>> > (currently there's no notification mechanism for suspend cause changes,
>> > though). */
>> >
>>
>> I've answered you before, this line was added by Mikel at some point
>> to the BlueZ 4 support. This whole code series is a refactor, I think
>> we shouldn't block this series because of issues like this one, which
>> are from the original code and can be very well addressed later on.
>
> I was not asking you to fix the issue, I was only asking you to add the
> comment.
>

Yes, I understood that. But when I said I didn't know exactly why we
were removing PA_SUSPEND it wasn't clear to me that you still wanted
me to add that comment.

>> And actually, for the matter of adding this comment it makes more
>> sense that you add it in a separate commit, since the comment is
>> coming from you, not from me.
>
> Ok, I'll add it.
>

Ok, I feel more comfortable with you do it, so I don't become
responsible for a comment that do not understand entirely.

-- 
Jo?o Paulo Rechi Vita
http://about.me/jprvita


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

  Powered by Linux