static void gtk_application_x11_publish_menu (GtkApplication *application, const gchar *type, GMenuModel *model, guint *id, gchar **path) { gint i; /* unexport any existing menu */ if (*id) { g_dbus_connection_unexport_menu_model (application->priv->session_bus, *id); g_free (*path); *path = NULL; *id = 0; } /* export the new menu, if there is one */ if (model != NULL) { /* try getting the preferred name */ *path = g_strconcat (application->priv->object_path, "/menus/", type, NULL); *id = g_dbus_connection_export_menu_model (application->priv->session_bus, *path, model, NULL); /* keep trying until we get a working name... */ for (i = 0; *id == 0; i++) { g_free (*path); *path = g_strdup_printf ("%s/menus/%s%d", application->priv->object_path, type, i); *id = g_dbus_connection_export_menu_model (application->priv->session_bus, *path, model, NULL); } } }
static void name_lost (GDBusConnection *connection, const gchar *name, gpointer user_data) { IndicatorTestService *indicator = user_data; if (indicator->actions_export_id) g_dbus_connection_unexport_action_group (connection, indicator->actions_export_id); if (indicator->menu_export_id) g_dbus_connection_unexport_menu_model (connection, indicator->menu_export_id); }