benzea / rpms / gdm

Forked from rpms/gdm 4 years ago
Clone
Blob Blame History Raw
From 0ca0d06b10a8091b5a273fcfd6788ef1cf9f020c Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
Date: Fri, 27 Aug 2010 16:33:22 -0400
Subject: [PATCH] Connect to accounts service correctly

Previously, we were using

dbus_g_proxy_new_for_name_owner which is wrong.

It means we will give up early and fail to active
the accounts service.

(This used to work because we also did a separate
dbus_g_proxy_new_for_name to the accounts service
in a different source file)
---
 gui/simple-greeter/gdm-user-manager.c |   84 ++++++++++++---------------------
 1 files changed, 31 insertions(+), 53 deletions(-)

diff --git a/gui/simple-greeter/gdm-user-manager.c b/gui/simple-greeter/gdm-user-manager.c
index 4dbfcbe..0069480 100644
--- a/gui/simple-greeter/gdm-user-manager.c
+++ b/gui/simple-greeter/gdm-user-manager.c
@@ -1438,15 +1438,6 @@ unload_seat (GdmUserManager *manager)
 }
 
 static void
-on_accounts_proxy_destroy (DBusGProxy     *proxy,
-                           GdmUserManager *manager)
-{
-        g_debug ("GdmUserManager: accounts proxy destroyed");
-
-        manager->priv->accounts_proxy = NULL;
-}
-
-static void
 get_accounts_proxy (GdmUserManager *manager)
 {
         DBusGProxy      *proxy;
@@ -1455,40 +1446,31 @@ get_accounts_proxy (GdmUserManager *manager)
         g_assert (manager->priv->accounts_proxy == NULL);
 
         error = NULL;
-        proxy = dbus_g_proxy_new_for_name_owner (manager->priv->connection,
-                                                 ACCOUNTS_NAME,
-                                                 ACCOUNTS_PATH,
-                                                 ACCOUNTS_INTERFACE,
-                                                 &error);
+        proxy = dbus_g_proxy_new_for_name (manager->priv->connection,
+                                           ACCOUNTS_NAME,
+                                           ACCOUNTS_PATH,
+                                           ACCOUNTS_INTERFACE);
         manager->priv->accounts_proxy = proxy;
 
-        if (proxy != NULL) {
-                g_signal_connect (proxy, "destroy",
-                                  G_CALLBACK (on_accounts_proxy_destroy),
-                                  manager);
+        dbus_g_proxy_add_signal (proxy,
+                                 "UserAdded",
+                                 DBUS_TYPE_G_OBJECT_PATH,
+                                 G_TYPE_INVALID);
+        dbus_g_proxy_add_signal (proxy,
+                                 "UserDeleted",
+                                 DBUS_TYPE_G_OBJECT_PATH,
+                                 G_TYPE_INVALID);
 
-                dbus_g_proxy_add_signal (proxy,
-                                         "UserAdded",
-                                         DBUS_TYPE_G_OBJECT_PATH,
-                                         G_TYPE_INVALID);
-                dbus_g_proxy_add_signal (proxy,
-                                         "UserDeleted",
-                                         DBUS_TYPE_G_OBJECT_PATH,
-                                         G_TYPE_INVALID);
-
-                dbus_g_proxy_connect_signal (proxy,
-                                             "UserAdded",
-                                             G_CALLBACK (on_new_user_in_accounts_service),
-                                             manager,
-                                             NULL);
-                dbus_g_proxy_connect_signal (proxy,
-                                             "UserDeleted",
-                                             G_CALLBACK (on_user_removed_in_accounts_service),
-                                             manager,
-                                             NULL);
-        } else {
-                g_debug ("GdmUserManager: Unable to connect to accounts service");
-        }
+        dbus_g_proxy_connect_signal (proxy,
+                                     "UserAdded",
+                                     G_CALLBACK (on_new_user_in_accounts_service),
+                                     manager,
+                                     NULL);
+        dbus_g_proxy_connect_signal (proxy,
+                                     "UserDeleted",
+                                     G_CALLBACK (on_user_removed_in_accounts_service),
+                                     manager,
+                                     NULL);
 }
 
 static void
@@ -2343,19 +2325,15 @@ load_users_manually (GdmUserManager *manager)
 static void
 load_users (GdmUserManager *manager)
 {
-        if (manager->priv->accounts_proxy != NULL) {
-                g_debug ("GdmUserManager: calling 'ListCachedUsers'");
-
-                dbus_g_proxy_begin_call (manager->priv->accounts_proxy,
-                                         "ListCachedUsers",
-                                         on_list_cached_users_finished,
-                                         manager,
-                                         NULL,
-                                         G_TYPE_INVALID);
-        } else {
-                g_debug ("GdmUserManager: Getting users manually");
-                load_users_manually (manager);
-        }
+        g_assert (manager->priv->accounts_proxy != NULL);
+        g_debug ("GdmUserManager: calling 'ListCachedUsers'");
+
+        dbus_g_proxy_begin_call (manager->priv->accounts_proxy,
+                                 "ListCachedUsers",
+                                 on_list_cached_users_finished,
+                                 manager,
+                                 NULL,
+                                 G_TYPE_INVALID);
 }
 
 static void
-- 
1.7.2.2