Return-Path: MIME-Version: 1.0 In-Reply-To: References: From: Luiz Augusto von Dentz Date: Thu, 14 Sep 2017 11:23:48 +0300 Message-ID: Subject: Re: [PATCH BlueZ v4] client: Fix default_ctrl change when new adapter is found To: ERAMOTO Masaya Cc: Yunhan Wang , "linux-bluetooth@vger.kernel.org" Content-Type: text/plain; charset="UTF-8" Sender: linux-bluetooth-owner@vger.kernel.org List-ID: Hi Eramoto, On Thu, Sep 14, 2017 at 5:50 AM, ERAMOTO Masaya wrote: > Since 4e111f3448a126786f3620be1b5ce969456edc65, 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 | 31 +++++++++++++++++++++++++++---- > 1 file changed, 27 insertions(+), 4 deletions(-) > > v4: add adapter_new() which allocates memory for a new adapter. > call find_ctrl() to find out the exist adapter. > > diff --git a/client/main.c b/client/main.c > index 87eb131..2cb449f 100644 > --- a/client/main.c > +++ b/client/main.c > @@ -525,17 +525,40 @@ static void device_added(GDBusProxy *proxy) > } > } > > +static struct adapter *find_ctrl(GList *source, const char *path); > + > +static struct adapter *adapter_new(GDBusProxy *proxy) > +{ > + struct adapter *adapter = g_malloc0(sizeof(struct adapter)); > + > + ctrl_list = g_list_append(ctrl_list, adapter); > + > + if (!default_ctrl) > + default_ctrl = adapter; > + > + return adapter; > +} > + > 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; > + adapter = find_ctrl(ctrl_list, g_dbus_proxy_get_path(proxy)); > + if (!adapter) > + adapter = adapter_new(proxy); > + > + adapter->proxy = proxy; > + > print_adapter(proxy, COLORED_NEW); > } > > static void ad_manager_added(GDBusProxy *proxy) > { > - default_ctrl->ad_proxy = proxy; > + struct adapter *adapter; > + adapter = find_ctrl(ctrl_list, g_dbus_proxy_get_path(proxy)); > + if (!adapter) > + adapter = adapter_new(proxy); > + > + adapter->ad_proxy = proxy; > } > > static void proxy_added(GDBusProxy *proxy, void *user_data) > -- > 2.7.4 Applied, thanks. -- Luiz Augusto von Dentz