Re: [PATCH v2] client: Fix default_ctrl change when new adapter is found

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

 



Hi Yunhan,

On Wed, Sep 6, 2017 at 8:27 AM, Yunhan Wang <yunhanw@xxxxxxxxxx> wrote:
> When another adapter is found, the default adapter would be changed,
> which is not expected. Default adapter can only be changed by select
> command.
> ---
>  client/main.c | 17 ++++++++++++-----
>  1 file changed, 12 insertions(+), 5 deletions(-)
>
> diff --git a/client/main.c b/client/main.c
> index 75696c2c1..e76b6fc25 100644
> --- a/client/main.c
> +++ b/client/main.c
> @@ -67,6 +67,7 @@ struct adapter {
>  };
>
>  static struct adapter *default_ctrl;
> +static struct adapter *cache_ctrl;
>  static GDBusProxy *default_dev;
>  static GDBusProxy *default_attr;
>  static GList *ctrl_list;
> @@ -151,7 +152,7 @@ static void disconnect_handler(DBusConnection *connection, void *user_data)
>
>         g_list_free_full(ctrl_list, proxy_leak);
>         ctrl_list = NULL;
> -
> +       cache_ctrl = NULL;
>         default_ctrl = NULL;
>  }
>
> @@ -521,15 +522,21 @@ static void device_added(GDBusProxy *proxy)
>
>  static void adapter_added(GDBusProxy *proxy)
>  {
> -       default_ctrl = g_malloc0(sizeof(struct adapter));
> -       default_ctrl->proxy = proxy;
> -       ctrl_list = g_list_append(ctrl_list, default_ctrl);
> +       struct adapter *adapter = g_malloc0(sizeof(struct adapter));
> +
> +       adapter->proxy = proxy;
> +       cache_ctrl = adapter;

Lets not do this, we should never assume any specific order in which
the proxies are discovered.

> +       ctrl_list = g_list_append(ctrl_list, adapter);
> +
> +       if (!default_ctrl)
> +               default_ctrl = adapter;
> +
>         print_adapter(proxy, COLORED_NEW);
>  }
>
>  static void ad_manager_added(GDBusProxy *proxy)
>  {
> -       default_ctrl->ad_proxy = proxy;
> +       cache_ctrl->ad_proxy = proxy;

So instead of caching the last controller found this should lookup the
adapter pointer from the ctrl_list and then update its ad_proxy.

>  }
>
>  static void proxy_added(GDBusProxy *proxy, void *user_data)
> --
> 2.14.1.581.gf28d330327-goog
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



-- 
Luiz Augusto von Dentz
--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux