summaryrefslogtreecommitdiff
path: root/daemon/gdm-session-direct.c
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2008-02-18 19:46:44 +0000
committerRay Strode <halfline@src.gnome.org>2008-02-18 19:46:44 +0000
commit6e2429a11efa64370386f85c79dc5995375d9ae2 (patch)
tree5c365c6dff6eea3102af26d986d0299346f51a05 /daemon/gdm-session-direct.c
parentcfcbd7f2be687933753b1d9f922c3aea365ef1f7 (diff)
downloadgdm-6e2429a11efa64370386f85c79dc5995375d9ae2.tar.gz
Read ~/.dmrc when available, and bubble the results up to the greeter
2008-02-18 Ray Strode <rstrode@redhat.com> Read ~/.dmrc when available, and bubble the results up to the greeter * daemon/Makefile.am: add gdm-session-settings.[ch] to worker sources * daemon/gdm-session-private.h: * daemon/gdm-session.[ch]: (_gdm_session_saved_language_name_read), (_gdm_session_saved_session_name_read), (gdm_session_class_init): Add two new signals: "saved-language-name-read" and "saved-session-name-read" * daemon/gdm-session-worker.c (GdmSessionWorkerPrivate): session settings object to hold ~/.dmrc info. (attempt_to_load_user_settings_as_root): new function to switch from root to user, load settings, and switch back (do_setup), (gdm_session_worker_update_username): Create session settings object, and try to load ~/.dmrc in to object at various points in the pam conversation. (on_saved_language_name_read), (on_saved_session_name_read): report session settings changes from worker to slave * daemon/gdm-greeter-server.[ch]: (gdm_greeter_server_saved_language_name_read), (gdm_greeter_server_saved_session_name_read), (do_introspect): send language and session name to greeter svn path=/trunk/; revision=5789
Diffstat (limited to 'daemon/gdm-session-direct.c')
-rw-r--r--daemon/gdm-session-direct.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/daemon/gdm-session-direct.c b/daemon/gdm-session-direct.c
index 46277f67..e3c258a0 100644
--- a/daemon/gdm-session-direct.c
+++ b/daemon/gdm-session-direct.c
@@ -775,6 +775,58 @@ gdm_session_direct_handle_session_died (GdmSessionDirect *session,
}
static DBusHandlerResult
+gdm_session_direct_handle_saved_language_name_read (GdmSessionDirect *session,
+ DBusConnection *connection,
+ DBusMessage *message)
+{
+ DBusMessage *reply;
+ DBusError error;
+ const char *language_name;
+ int code;
+
+ dbus_error_init (&error);
+ if (! dbus_message_get_args (message, &error,
+ DBUS_TYPE_STRING, &language_name,
+ DBUS_TYPE_INVALID)) {
+ g_warning ("ERROR: %s", error.message);
+ }
+
+ reply = dbus_message_new_method_return (message);
+ dbus_connection_send (connection, reply, NULL);
+ dbus_message_unref (reply);
+
+ _gdm_session_saved_language_name_read (GDM_SESSION (session), language_name);
+
+ return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+static DBusHandlerResult
+gdm_session_direct_handle_saved_session_name_read (GdmSessionDirect *session,
+ DBusConnection *connection,
+ DBusMessage *message)
+{
+ DBusMessage *reply;
+ DBusError error;
+ const char *session_name;
+ int code;
+
+ dbus_error_init (&error);
+ if (! dbus_message_get_args (message, &error,
+ DBUS_TYPE_STRING, &session_name,
+ DBUS_TYPE_INVALID)) {
+ g_warning ("ERROR: %s", error.message);
+ }
+
+ reply = dbus_message_new_method_return (message);
+ dbus_connection_send (connection, reply, NULL);
+ dbus_message_unref (reply);
+
+ _gdm_session_saved_session_name_read (GDM_SESSION (session), session_name);
+
+ return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+static DBusHandlerResult
session_worker_message (DBusConnection *connection,
DBusMessage *message,
void *user_data)
@@ -821,6 +873,10 @@ session_worker_message (DBusConnection *connection,
return gdm_session_direct_handle_session_exited (session, connection, message);
} else if (dbus_message_is_method_call (message, GDM_SESSION_DBUS_INTERFACE, "SessionDied")) {
return gdm_session_direct_handle_session_died (session, connection, message);
+ } else if (dbus_message_is_method_call (message, GDM_SESSION_DBUS_INTERFACE, "SavedLanguageNameRead")) {
+ return gdm_session_direct_handle_saved_language_name_read (session, connection, message);
+ } else if (dbus_message_is_method_call (message, GDM_SESSION_DBUS_INTERFACE, "SavedSessionNameRead")) {
+ return gdm_session_direct_handle_saved_session_name_read (session, connection, message);
}
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;