gdm: resync cut-and-paste code from gdm tree.

The GDM code upstream talks to the account service now,
has better introspection annotations, and is more
asynchronous.

This commit updates the shell's copy to the latest
upstream.

Note, the API changed somewhat and so the callers will
need to be fixed up subsequently.

https://bugzilla.gnome.org/show_bug.cgi?id=631888
This commit is contained in:
Ray Strode 2010-10-07 16:59:03 -04:00
parent 9bfda11f0d
commit 7ce5ea4142
6 changed files with 2595 additions and 1282 deletions

View File

@ -5,6 +5,7 @@ gdmuser_cflags = \
-DDATADIR=\""$(datadir)"\" \
-DG_DISABLE_DEPRECATED \
-DG_LOG_DOMAIN=\"GdmUser\" \
-DGDM_CACHE_DIR=\""$(localstatedir)/cache/gdm"\" \
$(GDMUSER_CFLAGS) \
$(NULL)

File diff suppressed because it is too large Load Diff

View File

@ -18,8 +18,8 @@
*
*/
#ifndef __GDM_USER_MANAGER_H
#define __GDM_USER_MANAGER_H
#ifndef __GDM_USER_MANAGER_H__
#define __GDM_USER_MANAGER_H__
#include <glib-object.h>
@ -35,34 +35,35 @@ G_BEGIN_DECLS
#define GDM_USER_MANAGER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDM_TYPE_USER_MANAGER, GdmUserManagerClass))
typedef struct GdmUserManagerPrivate GdmUserManagerPrivate;
typedef struct GdmUserManager GdmUserManager;
typedef struct GdmUserManagerClass GdmUserManagerClass;
typedef enum GdmUserManagerError GdmUserManagerError;
typedef struct
struct GdmUserManager
{
GObject parent;
GdmUserManagerPrivate *priv;
} GdmUserManager;
};
typedef struct
struct GdmUserManagerClass
{
GObjectClass parent_class;
void (* loading_users) (GdmUserManager *user_manager);
void (* users_loaded) (GdmUserManager *user_manager);
void (* user_added) (GdmUserManager *user_manager,
GdmUser *user);
void (* user_removed) (GdmUserManager *user_manager,
GdmUser *user);
void (* user_is_logged_in_changed) (GdmUserManager *user_manager,
GdmUser *user);
void (* user_login_frequency_changed) (GdmUserManager *user_manager,
GdmUser *user);
} GdmUserManagerClass;
void (* user_changed) (GdmUserManager *user_manager,
GdmUser *user);
};
typedef enum
enum GdmUserManagerError
{
GDM_USER_MANAGER_ERROR_GENERAL,
GDM_USER_MANAGER_ERROR_KEY_NOT_FOUND
} GdmUserManagerError;
};
#define GDM_USER_MANAGER_ERROR gdm_user_manager_error_quark ()
@ -71,6 +72,7 @@ GType gdm_user_manager_get_type (void);
GdmUserManager * gdm_user_manager_ref_default (void);
void gdm_user_manager_queue_load (GdmUserManager *manager);
GSList * gdm_user_manager_list_users (GdmUserManager *manager);
GdmUser * gdm_user_manager_get_user (GdmUserManager *manager,
const char *username);
@ -80,6 +82,8 @@ GdmUser * gdm_user_manager_get_user_by_uid (GdmUserManager *mana
gboolean gdm_user_manager_activate_user_session (GdmUserManager *manager,
GdmUser *user);
gboolean gdm_user_manager_can_switch (GdmUserManager *manager);
gboolean gdm_user_manager_goto_login_session (GdmUserManager *manager);
G_END_DECLS

View File

@ -21,8 +21,8 @@
* Private interfaces to the GdmUser object
*/
#ifndef __GDM_USER_PRIVATE_H
#define __GDM_USER_PRIVATE_H
#ifndef __GDM_USER_PRIVATE_H_
#define __GDM_USER_PRIVATE_H_
#include <pwd.h>
@ -30,15 +30,20 @@
G_BEGIN_DECLS
void _gdm_user_update (GdmUser *user,
const struct passwd *pwent);
void _gdm_user_update_from_object_path (GdmUser *user,
const char *object_path);
void _gdm_user_update_from_pwent (GdmUser *user,
const struct passwd *pwent);
void _gdm_user_update_login_frequency (GdmUser *user,
guint64 login_frequency);
void _gdm_user_add_session (GdmUser *user,
const char *session_id);
void _gdm_user_remove_session (GdmUser *user,
const char *session_id);
void _gdm_user_icon_changed (GdmUser *user);
G_END_DECLS
#endif /* !__GDM_USER_PRIVATE_H */
#endif /* !__GDM_USER_PRIVATE__ */

File diff suppressed because it is too large Load Diff

View File

@ -22,8 +22,8 @@
* Facade object for user data, owned by GdmUserManager
*/
#ifndef __GDM_USER_H
#define __GDM_USER_H
#ifndef __GDM_USER_H__
#define __GDM_USER_H__
#include <sys/types.h>
#include <gtk/gtk.h>
@ -40,20 +40,24 @@ typedef struct _GdmUserClass GdmUserClass;
GType gdm_user_get_type (void) G_GNUC_CONST;
GdmUser *gdm_user_new_from_object_path (const char *path);
const char *gdm_user_get_object_path (GdmUser *user);
gulong gdm_user_get_uid (GdmUser *user);
G_CONST_RETURN char *gdm_user_get_user_name (GdmUser *user);
G_CONST_RETURN char *gdm_user_get_real_name (GdmUser *user);
G_CONST_RETURN char *gdm_user_get_home_directory (GdmUser *user);
G_CONST_RETURN char *gdm_user_get_shell (GdmUser *user);
const char *gdm_user_get_user_name (GdmUser *user);
const char *gdm_user_get_real_name (GdmUser *user);
guint gdm_user_get_num_sessions (GdmUser *user);
GList *gdm_user_get_sessions (GdmUser *user);
gboolean gdm_user_is_logged_in (GdmUser *user);
gulong gdm_user_get_login_frequency (GdmUser *user);
const char *gdm_user_get_icon_file (GdmUser *user);
const char *gdm_user_get_primary_session_id (GdmUser *user);
GdkPixbuf *gdm_user_render_icon (GdmUser *user,
gint icon_size);
gint gdm_user_collate (GdmUser *user1,
GdmUser *user2);
gboolean gdm_user_is_loaded (GdmUser *user);
G_END_DECLS