From a5ceed91fbe628f116fcfe9f170727158ec4a441 Mon Sep 17 00:00:00 2001 From: ERAMOTO Masaya Date: Thu, 14 Sep 2017 11:50:49 +0900 Subject: [PATCH] client: Fix default_ctrl change when new adapter is found 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(-) diff --git a/client/main.c b/client/main.c index 87eb13165..2cb449fd5 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.47.3