[BlueZ v4 6/9] client: Port "admin" menu to pre_run

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

 



---
 client/admin.c | 12 +++++++++++-
 client/admin.h |  1 -
 client/main.c  |  1 -
 3 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/client/admin.c b/client/admin.c
index 614a492f1f5f..6bcbdc026906 100644
--- a/client/admin.c
+++ b/client/admin.c
@@ -27,6 +27,8 @@ static GList *admin_proxies;
 static GDBusProxy *set_proxy;
 static GDBusProxy *status_proxy;
 
+static void admin_menu_pre_run(const struct bt_shell_menu *menu);
+
 static void admin_policy_set_set_proxy(GDBusProxy *proxy)
 {
 	set_proxy = proxy;
@@ -140,6 +142,7 @@ static void cmd_admin_allow(int argc, char *argv[])
 static const struct bt_shell_menu admin_menu = {
 	.name = "admin",
 	.desc = "Admin Policy Submenu",
+	.pre_run = admin_menu_pre_run,
 	.entries = {
 	{ "allow", "[clear/uuid1 uuid2 ...]", cmd_admin_allow,
 				"Allow service UUIDs and block rest of them"},
@@ -195,8 +198,13 @@ void admin_add_submenu(void)
 	bt_shell_add_submenu(&admin_menu);
 }
 
-void admin_enable_submenu(void)
+static bool pre_run_done = false;
+
+static void admin_menu_pre_run(const struct bt_shell_menu *menu)
 {
+	if (pre_run_done)
+		return;
+
 	dbus_conn = bt_shell_get_env("DBUS_CONNECTION");
 	if (!dbus_conn || client)
 		return;
@@ -205,6 +213,8 @@ void admin_enable_submenu(void)
 	g_dbus_client_set_proxy_handlers(client, proxy_added, proxy_removed,
 							NULL, NULL);
 	g_dbus_client_set_disconnect_watch(client, disconnect_handler, NULL);
+
+	pre_run_done = true;
 }
 
 void admin_remove_submenu(void)
diff --git a/client/admin.h b/client/admin.h
index 08cca585d466..0047770dc737 100644
--- a/client/admin.h
+++ b/client/admin.h
@@ -9,5 +9,4 @@
  */
 
 void admin_add_submenu(void);
-void admin_enable_submenu(void);
 void admin_remove_submenu(void);
diff --git a/client/main.c b/client/main.c
index c536a179dc7a..5d32b5218857 100644
--- a/client/main.c
+++ b/client/main.c
@@ -3426,7 +3426,6 @@ int main(int argc, char *argv[])
 		bt_shell_set_env("AUTO_REGISTER_ENDPOINT",
 					(void *)endpoint_option);
 
-	admin_enable_submenu();
 	player_enable_submenu();
 	mgmt_enable_submenu();
 	assistant_enable_submenu();
-- 
2.49.0





[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