benzea / rpms / gdm

Forked from rpms/gdm 4 years ago
Clone
e53a0cf
From 0ca0d06b10a8091b5a273fcfd6788ef1cf9f020c Mon Sep 17 00:00:00 2001
e53a0cf
From: Ray Strode <rstrode@redhat.com>
e53a0cf
Date: Fri, 27 Aug 2010 16:33:22 -0400
e53a0cf
Subject: [PATCH] Connect to accounts service correctly
e53a0cf
e53a0cf
Previously, we were using
e53a0cf
e53a0cf
dbus_g_proxy_new_for_name_owner which is wrong.
e53a0cf
e53a0cf
It means we will give up early and fail to active
e53a0cf
the accounts service.
e53a0cf
e53a0cf
(This used to work because we also did a separate
e53a0cf
dbus_g_proxy_new_for_name to the accounts service
e53a0cf
in a different source file)
e53a0cf
---
e53a0cf
 gui/simple-greeter/gdm-user-manager.c |   84 ++++++++++++---------------------
e53a0cf
 1 files changed, 31 insertions(+), 53 deletions(-)
e53a0cf
e53a0cf
diff --git a/gui/simple-greeter/gdm-user-manager.c b/gui/simple-greeter/gdm-user-manager.c
e53a0cf
index 4dbfcbe..0069480 100644
e53a0cf
--- a/gui/simple-greeter/gdm-user-manager.c
e53a0cf
+++ b/gui/simple-greeter/gdm-user-manager.c
e53a0cf
@@ -1438,15 +1438,6 @@ unload_seat (GdmUserManager *manager)
e53a0cf
 }
e53a0cf
 
e53a0cf
 static void
e53a0cf
-on_accounts_proxy_destroy (DBusGProxy     *proxy,
e53a0cf
-                           GdmUserManager *manager)
e53a0cf
-{
e53a0cf
-        g_debug ("GdmUserManager: accounts proxy destroyed");
e53a0cf
-
e53a0cf
-        manager->priv->accounts_proxy = NULL;
e53a0cf
-}
e53a0cf
-
e53a0cf
-static void
e53a0cf
 get_accounts_proxy (GdmUserManager *manager)
e53a0cf
 {
e53a0cf
         DBusGProxy      *proxy;
e53a0cf
@@ -1455,40 +1446,31 @@ get_accounts_proxy (GdmUserManager *manager)
e53a0cf
         g_assert (manager->priv->accounts_proxy == NULL);
e53a0cf
 
e53a0cf
         error = NULL;
e53a0cf
-        proxy = dbus_g_proxy_new_for_name_owner (manager->priv->connection,
e53a0cf
-                                                 ACCOUNTS_NAME,
e53a0cf
-                                                 ACCOUNTS_PATH,
e53a0cf
-                                                 ACCOUNTS_INTERFACE,
e53a0cf
-                                                 &error);
e53a0cf
+        proxy = dbus_g_proxy_new_for_name (manager->priv->connection,
e53a0cf
+                                           ACCOUNTS_NAME,
e53a0cf
+                                           ACCOUNTS_PATH,
e53a0cf
+                                           ACCOUNTS_INTERFACE);
e53a0cf
         manager->priv->accounts_proxy = proxy;
e53a0cf
 
e53a0cf
-        if (proxy != NULL) {
e53a0cf
-                g_signal_connect (proxy, "destroy",
e53a0cf
-                                  G_CALLBACK (on_accounts_proxy_destroy),
e53a0cf
-                                  manager);
e53a0cf
+        dbus_g_proxy_add_signal (proxy,
e53a0cf
+                                 "UserAdded",
e53a0cf
+                                 DBUS_TYPE_G_OBJECT_PATH,
e53a0cf
+                                 G_TYPE_INVALID);
e53a0cf
+        dbus_g_proxy_add_signal (proxy,
e53a0cf
+                                 "UserDeleted",
e53a0cf
+                                 DBUS_TYPE_G_OBJECT_PATH,
e53a0cf
+                                 G_TYPE_INVALID);
e53a0cf
 
e53a0cf
-                dbus_g_proxy_add_signal (proxy,
e53a0cf
-                                         "UserAdded",
e53a0cf
-                                         DBUS_TYPE_G_OBJECT_PATH,
e53a0cf
-                                         G_TYPE_INVALID);
e53a0cf
-                dbus_g_proxy_add_signal (proxy,
e53a0cf
-                                         "UserDeleted",
e53a0cf
-                                         DBUS_TYPE_G_OBJECT_PATH,
e53a0cf
-                                         G_TYPE_INVALID);
e53a0cf
-
e53a0cf
-                dbus_g_proxy_connect_signal (proxy,
e53a0cf
-                                             "UserAdded",
e53a0cf
-                                             G_CALLBACK (on_new_user_in_accounts_service),
e53a0cf
-                                             manager,
e53a0cf
-                                             NULL);
e53a0cf
-                dbus_g_proxy_connect_signal (proxy,
e53a0cf
-                                             "UserDeleted",
e53a0cf
-                                             G_CALLBACK (on_user_removed_in_accounts_service),
e53a0cf
-                                             manager,
e53a0cf
-                                             NULL);
e53a0cf
-        } else {
e53a0cf
-                g_debug ("GdmUserManager: Unable to connect to accounts service");
e53a0cf
-        }
e53a0cf
+        dbus_g_proxy_connect_signal (proxy,
e53a0cf
+                                     "UserAdded",
e53a0cf
+                                     G_CALLBACK (on_new_user_in_accounts_service),
e53a0cf
+                                     manager,
e53a0cf
+                                     NULL);
e53a0cf
+        dbus_g_proxy_connect_signal (proxy,
e53a0cf
+                                     "UserDeleted",
e53a0cf
+                                     G_CALLBACK (on_user_removed_in_accounts_service),
e53a0cf
+                                     manager,
e53a0cf
+                                     NULL);
e53a0cf
 }
e53a0cf
 
e53a0cf
 static void
e53a0cf
@@ -2343,19 +2325,15 @@ load_users_manually (GdmUserManager *manager)
e53a0cf
 static void
e53a0cf
 load_users (GdmUserManager *manager)
e53a0cf
 {
e53a0cf
-        if (manager->priv->accounts_proxy != NULL) {
e53a0cf
-                g_debug ("GdmUserManager: calling 'ListCachedUsers'");
e53a0cf
-
e53a0cf
-                dbus_g_proxy_begin_call (manager->priv->accounts_proxy,
e53a0cf
-                                         "ListCachedUsers",
e53a0cf
-                                         on_list_cached_users_finished,
e53a0cf
-                                         manager,
e53a0cf
-                                         NULL,
e53a0cf
-                                         G_TYPE_INVALID);
e53a0cf
-        } else {
e53a0cf
-                g_debug ("GdmUserManager: Getting users manually");
e53a0cf
-                load_users_manually (manager);
e53a0cf
-        }
e53a0cf
+        g_assert (manager->priv->accounts_proxy != NULL);
e53a0cf
+        g_debug ("GdmUserManager: calling 'ListCachedUsers'");
e53a0cf
+
e53a0cf
+        dbus_g_proxy_begin_call (manager->priv->accounts_proxy,
e53a0cf
+                                 "ListCachedUsers",
e53a0cf
+                                 on_list_cached_users_finished,
e53a0cf
+                                 manager,
e53a0cf
+                                 NULL,
e53a0cf
+                                 G_TYPE_INVALID);
e53a0cf
 }
e53a0cf
 
e53a0cf
 static void
e53a0cf
-- 
e53a0cf
1.7.2.2
e53a0cf