aboutsummaryrefslogtreecommitdiff
path: root/src/user-menu-mgr.c
diff options
context:
space:
mode:
authorCharles Kerr <charles.kerr@canonical.com>2012-06-13 14:41:31 -0500
committerCharles Kerr <charles.kerr@canonical.com>2012-06-13 14:41:31 -0500
commit146081cfecfe27e69a4b93a15782924d79c6c18e (patch)
tree3898bb3f5767169b602ed6fe9978cd4448146771 /src/user-menu-mgr.c
parentb8c1cd566b533b84b3cb16f1dd24fecb388c62a9 (diff)
downloadayatana-indicator-session-146081cfecfe27e69a4b93a15782924d79c6c18e.tar.gz
ayatana-indicator-session-146081cfecfe27e69a4b93a15782924d79c6c18e.tar.bz2
ayatana-indicator-session-146081cfecfe27e69a4b93a15782924d79c6c18e.zip
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.
Diffstat (limited to 'src/user-menu-mgr.c')
-rw-r--r--src/user-menu-mgr.c19
1 files changed, 7 insertions, 12 deletions
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);
}