From 146081cfecfe27e69a4b93a15782924d79c6c18e Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Wed, 13 Jun 2012 14:41:31 -0500 Subject: Don't use all the new users that we get told about. The issue is fringe cases where we get notified about a user we don't want to show, such as lightdm showing up after we've switched to the greeter. Instead, let's ask org.freedesktop.Accounts for a fresh list of users so that it can apply its internal filters to the user list. --- src/user-menu-mgr.c | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) (limited to 'src/user-menu-mgr.c') diff --git a/src/user-menu-mgr.c b/src/user-menu-mgr.c index e7c6348..89fb841 100644 --- a/src/user-menu-mgr.c +++ b/src/user-menu-mgr.c @@ -57,9 +57,8 @@ static void activate_user_accounts (DbusmenuMenuitem *mi, guint timestamp, gpointer user_data); static void user_menu_mgr_rebuild_items (UserMenuMgr *self); -static void user_change (UsersServiceDbus *service, - const gchar *user_id, - gpointer user_data); +static void on_user_list_changed (UsersServiceDbus *service, + UserMenuMgr * umm); static void on_guest_logged_in_changed (UsersServiceDbus * users_dbus, UserMenuMgr * self); @@ -85,10 +84,8 @@ user_menu_mgr_init (UserMenuMgr *self) self->lockdown_settings = g_settings_new (LOCKDOWN_SCHEMA); self->users_dbus_interface = g_object_new (USERS_SERVICE_DBUS_TYPE, NULL); self->root_item = dbusmenu_menuitem_new (); - g_signal_connect (self->users_dbus_interface, "user-added", - G_CALLBACK (user_change), self); - g_signal_connect (self->users_dbus_interface, "user-deleted", - G_CALLBACK (user_change), self); + g_signal_connect (self->users_dbus_interface, "user-list-changed", + G_CALLBACK (on_user_list_changed), self); g_signal_connect (self->users_dbus_interface, "user-logged-in-changed", G_CALLBACK(on_user_logged_in_changed), self); g_signal_connect (self->users_dbus_interface, "guest-logged-in-changed", @@ -455,12 +452,10 @@ activate_user_accounts (DbusmenuMenuitem *mi, /* Signal called when a user is added. It updates the count and rebuilds the menu */ static void -user_change (UsersServiceDbus *service G_GNUC_UNUSED, - const gchar *user_id G_GNUC_UNUSED, - gpointer user_data) +on_user_list_changed (UsersServiceDbus * service G_GNUC_UNUSED, + UserMenuMgr * user_mgr) { - UserMenuMgr* user_mgr = USER_MENU_MGR (user_data); - g_return_if_fail (user_mgr != NULL); + g_return_if_fail (USER_IS_MENU_MGR(user_mgr)); user_menu_mgr_rebuild_items (user_mgr); } -- cgit v1.2.3