[pulseaudio-discuss] [PATCH 4/5] bluetooth: Remove device_remove_all()
João Paulo Rechi Vita
jprvita at gmail.com
Tue Oct 1 06:43:38 PDT 2013
On Sun, Sep 29, 2013 at 12:49 PM, Tanu Kaskinen
<tanu.kaskinen at linux.intel.com> wrote:
> The function did two things: set device_info_valid to -1 and called
> device_free() for each device in the hashmap. Setting
> device_info_valid to -1 was unnecessary. The main purpose of that was
> to fire DEVICE_CONNECTION_CHANGED as a side effect, but that hook is
> fired anyway in device_free(), as a side effect of removing all
> transports. Calling device_free() can be delegated to pa_hashmap, when
> freeing or emptying it.
> ---
> src/modules/bluetooth/bluez5-util.c | 20 ++++----------------
> 1 file changed, 4 insertions(+), 16 deletions(-)
>
> diff --git a/src/modules/bluetooth/bluez5-util.c b/src/modules/bluetooth/bluez5-util.c
> index c7e934e..591ea50 100644
> --- a/src/modules/bluetooth/bluez5-util.c
> +++ b/src/modules/bluetooth/bluez5-util.c
> @@ -454,17 +454,6 @@ static void set_device_info_valid(pa_bluetooth_device *device, int valid) {
> pa_hook_fire(&device->discovery->hooks[PA_BLUETOOTH_HOOK_DEVICE_CONNECTION_CHANGED], device);
> }
>
> -static void device_remove_all(pa_bluetooth_discovery *y) {
> - pa_bluetooth_device *d;
> -
> - pa_assert(y);
> -
> - while ((d = pa_hashmap_steal_first(y->devices))) {
> - set_device_info_valid(d, -1);
> - device_free(d);
> - }
> -}
> -
> static pa_bluetooth_adapter* adapter_create(pa_bluetooth_discovery *y, const char *path) {
> pa_bluetooth_adapter *a;
>
> @@ -928,7 +917,7 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *m, void *us
> if (pa_streq(name, BLUEZ_SERVICE)) {
> if (old_owner && *old_owner) {
> pa_log_debug("Bluetooth daemon disappeared");
> - device_remove_all(y);
> + pa_hashmap_remove_all(y->devices);
> pa_hashmap_remove_all(y->adapters);
> y->objects_listed = false;
> }
> @@ -1533,7 +1522,8 @@ pa_bluetooth_discovery* pa_bluetooth_discovery_get(pa_core *c) {
> y->core = c;
> y->adapters = pa_hashmap_new_full(pa_idxset_string_hash_func, pa_idxset_string_compare_func, NULL,
> (pa_free_cb_t) adapter_free);
> - y->devices = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
> + y->devices = pa_hashmap_new_full(pa_idxset_string_hash_func, pa_idxset_string_compare_func, NULL,
> + (pa_free_cb_t) device_free);
> y->transports = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
> PA_LLIST_HEAD_INIT(pa_dbus_pending, y->pending);
>
> @@ -1608,10 +1598,8 @@ void pa_bluetooth_discovery_unref(pa_bluetooth_discovery *y) {
>
> pa_dbus_free_pending_list(&y->pending);
>
> - if (y->devices) {
> - device_remove_all(y);
> + if (y->devices)
> pa_hashmap_free(y->devices);
> - }
>
> if (y->adapters)
> pa_hashmap_free(y->adapters);
Ack. Same question about testing applies here, and I should have made
it more generic, actually: Do you have audio devices to be able to
test these changes?
--
João Paulo Rechi Vita
http://about.me/jprvita
More information about the pulseaudio-discuss
mailing list