[pulseaudio-discuss] [PATCH 31/56] bluetooth: Implement org.bluez.MediaEndpoint1.ClearConfiguration()

Tanu Kaskinen tanu.kaskinen at linux.intel.com
Fri Jul 19 04:28:14 PDT 2013


On Fri, 2013-07-12 at 15:06 -0300, jprvita at gmail.com wrote:
> From: João Paulo Rechi Vita <jprvita at openbossa.org>
> 
> ---
>  src/modules/bluetooth/bluez5-util.c | 34 ++++++++++++++++++++++++++++++++--
>  1 file changed, 32 insertions(+), 2 deletions(-)
> 
> diff --git a/src/modules/bluetooth/bluez5-util.c b/src/modules/bluetooth/bluez5-util.c
> index d8cf1df..762d1e4 100644
> --- a/src/modules/bluetooth/bluez5-util.c
> +++ b/src/modules/bluetooth/bluez5-util.c
> @@ -631,11 +631,41 @@ fail:
>  }
>  
>  static DBusMessage *endpoint_clear_configuration(DBusConnection *conn, DBusMessage *m, void *userdata) {
> +    pa_bluetooth_discovery *y = userdata;
> +    pa_bluetooth_transport *t;
>      DBusMessage *r;
> +    DBusError err;
> +    const char *path;
>  
> -    pa_assert_se(r = dbus_message_new_error(m, BLUEZ_MEDIA_ENDPOINT_INTERFACE ".Error.NotImplemented",
> -                                            "Method not implemented"));
> +    dbus_error_init(&err);
>  
> +    if (!dbus_message_get_args(m, &err, DBUS_TYPE_OBJECT_PATH, &path, DBUS_TYPE_INVALID)) {
> +        pa_log_error("Endpoint ClearConfiguration(): %s", err.message);
> +        dbus_error_free(&err);
> +        goto fail;
> +    }
> +
> +    if ((t = pa_hashmap_get(y->transports, path))) {
> +        bool old_any_connected = pa_bluetooth_device_any_transport_connected(t->device);
> +
> +        pa_log_debug("Clearing transport %s profile %d", t->path, t->profile);

Human-readable profile, please.

> +        t->device->transports[t->profile] = NULL;
> +        t->state = PA_BLUETOOTH_TRANSPORT_STATE_DISCONNECTED;
> +        pa_hook_fire(&y->hooks[PA_BLUETOOTH_HOOK_TRANSPORT_STATE_CHANGED], t);

Copied from earlier mails:

"Can the transport state be DISCONNECTED already before we set it here?
If it can, please fire the hook only if the state actually changes."

"Also, I'd like a log message (debug level) whenever t->state changes.
There could be set_state() helper function that checks whether the new
state is different than the old state, and if it is, then sets t->state,
logs a message (including the old state, "state changed from <old> to
<new>") and fires the STATE_CHANGED hook.

This is just a wish, so I won't continue arguing if you for some reason
don't think this is a good idea."

> +
> +        if (old_any_connected != pa_bluetooth_device_any_transport_connected(t->device)) {
> +            pa_hook_fire(&y->hooks[PA_BLUETOOTH_HOOK_DEVICE_CONNECTION_CHANGED], t->device);
> +        }

Redundant braces.

-- 
Tanu



More information about the pulseaudio-discuss mailing list