--- 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