client: Fix default_ctrl change when new adapter is found
PATCH v3 1/1 client: Fix default_ctrl change when new adapter is found
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, 25 insertions(+), 6 deletions(-)
client/main.c +25 -6
@@ -148,10 +148,8 @@ static void disconnect_handler(DBusConnection *connection, void *user_data)printf ("\r" );rl_on_new_line ();rl_redisplay (); -g_list_free_full (ctrl_list, proxy_leak); ctrl_list =NULL ; - default_ctrl =NULL ; }
@@ -521,15 +519,36 @@ 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; + ctrl_list =g_list_append (ctrl_list, adapter); + +if (!default_ctrl) + default_ctrl = adapter; +print_adapter (proxy,COLORED_NEW ); } +static int match_proxy (const void *a,const void *b) +{ +GDBusProxy *proxy1 = (void *) a; +GDBusProxy *proxy2 = (void *) b; + +return strcmp (g_dbus_proxy_get_path (proxy1), +g_dbus_proxy_get_path (proxy2)); +} +static void ad_manager_added (GDBusProxy *proxy) { - default_ctrl->ad_proxy = proxy; +GList *list; + +for (list =g_list_first (ctrl_list); list; list =g_list_next (list)) { +struct adapter *adapter = list->data; + +if (match_proxy (proxy, adapter->proxy) ==0 ) + adapter->ad_proxy = proxy; + } }static void proxy_added (GDBusProxy *proxy,void *user_data)
Signature · 1 line
2.14.1.581.gf28d330327-goog
Hi Yunhan,
Quoted 48 lines · Yunhan Wang
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, 25 insertions(+), 6 deletions(-)client/main.c +17
-5@@ -148,10 +148,8 @@ static void disconnect_handler(DBusConnection *connection, void *user_data)printf ("\r" );rl_on_new_line ();rl_redisplay (); -g_list_free_full (ctrl_list, proxy_leak); ctrl_list =NULL ; - default_ctrl =NULL ; }@@ -521,15 +519,36 @@ 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; + ctrl_list =g_list_append (ctrl_list, adapter); + +if (!default_ctrl) + default_ctrl = adapter; +print_adapter (proxy,COLORED_NEW ); } +static int match_proxy (const void *a,const void *b) +{ +GDBusProxy *proxy1 = (void *) a; +GDBusProxy *proxy2 = (void *) b; + +return strcmp (g_dbus_proxy_get_path (proxy1), +g_dbus_proxy_get_path (proxy2)); +} +static void ad_manager_added (GDBusProxy *proxy)
client/main.c static void device_added(GDBusProxy *proxy) · line 551
Quoted 10 lines
client/main.c +8
-1{ - default_ctrl->ad_proxy = proxy; +GList *list; + +for (list =g_list_first (ctrl_list); list; list =g_list_next (list)) { +struct adapter *adapter = list->data; + +if (match_proxy (proxy, adapter->proxy) ==0 ) + adapter->ad_proxy = proxy; + }
I think that you should use find_ctrl(), which does the similar thing as match_proxy() and the for loop statement of above ad_manager_added().
Let's see ad_manager_added() of my attached patch at the URL:
https://www.spinics.net/lists/linux-bluetooth/msg71731.html
Regards,
Eramoto
Hi, ERAMOTO
Your patch is better. Could you reformat and resubmit it so that we can merge it.
Thanks
Best wishes
Yunhan
Quoted 72 lines · ERAMOTO Masaya
Hi Yunhan,
Quoted 48 lines · Yunhan Wang
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, 25 insertions(+), 6 deletions(-)client/main.c +17
-5@@ -148,10 +148,8 @@ static void disconnect_handler(DBusConnection *connection, void *user_data)printf ("\r" );rl_on_new_line ();rl_redisplay (); -g_list_free_full (ctrl_list, proxy_leak); ctrl_list =NULL ; - default_ctrl =NULL ; }@@ -521,15 +519,36 @@ 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; + ctrl_list =g_list_append (ctrl_list, adapter); + +if (!default_ctrl) + default_ctrl = adapter; +print_adapter (proxy,COLORED_NEW ); } +static int match_proxy (const void *a,const void *b) +{ +GDBusProxy *proxy1 = (void *) a; +GDBusProxy *proxy2 = (void *) b; + +return strcmp (g_dbus_proxy_get_path (proxy1), +g_dbus_proxy_get_path (proxy2)); +} +static void ad_manager_added (GDBusProxy *proxy)client/main.c static void device_added(GDBusProxy *proxy) · line 551
Quoted 10 lines
client/main.c +8
-1{ - default_ctrl->ad_proxy = proxy; +GList *list; + +for (list =g_list_first (ctrl_list); list; list =g_list_next (list)) { +struct adapter *adapter = list->data; + +if (match_proxy (proxy, adapter->proxy) ==0 ) + adapter->ad_proxy = proxy; + }I think that you should use
find_ctrl(), which does the similar thing asmatch_proxy()and the for loop statement of abovead_manager_added().Let's see
ad_manager_added()of my attached patch at the URL:
https://www.spinics.net/lists/linux-bluetooth/msg71731.htmlRegards,
Eramoto
Hi Luiz and Yunhan,
I sent the reformatted patch. Could you please help to have a review?
Best regards,
Eramoto
Quoted 84 lines · Yunhan Wang
Hi, ERAMOTO
Your patch is better. Could you reformat and resubmit it so that we can merge it.
Thanks
Best wishes
YunhanQuoted 72 lines · ERAMOTO Masaya
Hi Yunhan,
Quoted 48 lines · Yunhan Wang
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, 25 insertions(+), 6 deletions(-)client/main.c +17
-5@@ -148,10 +148,8 @@ static void disconnect_handler(DBusConnection *connection, void *user_data)printf ("\r" );rl_on_new_line ();rl_redisplay (); -g_list_free_full (ctrl_list, proxy_leak); ctrl_list =NULL ; - default_ctrl =NULL ; }@@ -521,15 +519,36 @@ 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; + ctrl_list =g_list_append (ctrl_list, adapter); + +if (!default_ctrl) + default_ctrl = adapter; +print_adapter (proxy,COLORED_NEW ); } +static int match_proxy (const void *a,const void *b) +{ +GDBusProxy *proxy1 = (void *) a; +GDBusProxy *proxy2 = (void *) b; + +return strcmp (g_dbus_proxy_get_path (proxy1), +g_dbus_proxy_get_path (proxy2)); +} +static void ad_manager_added (GDBusProxy *proxy)client/main.c static void device_added(GDBusProxy *proxy) · line 551
Quoted 10 lines
client/main.c +8
-1{ - default_ctrl->ad_proxy = proxy; +GList *list; + +for (list =g_list_first (ctrl_list); list; list =g_list_next (list)) { +struct adapter *adapter = list->data; + +if (match_proxy (proxy, adapter->proxy) ==0 ) + adapter->ad_proxy = proxy; + }I think that you should use
find_ctrl(), which does the similar thing asmatch_proxy()and the for loop statement of abovead_manager_added().Let's see
ad_manager_added()of my attached patch at the URL:
https://www.spinics.net/lists/linux-bluetooth/msg71731.htmlRegards,
Eramoto