diff options
author | Ray Strode <rstrode@redhat.com> | 2008-02-18 19:46:44 +0000 |
---|---|---|
committer | Ray Strode <halfline@src.gnome.org> | 2008-02-18 19:46:44 +0000 |
commit | 6e2429a11efa64370386f85c79dc5995375d9ae2 (patch) | |
tree | 5c365c6dff6eea3102af26d986d0299346f51a05 /daemon/gdm-session-direct.c | |
parent | cfcbd7f2be687933753b1d9f922c3aea365ef1f7 (diff) | |
download | gdm-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.c | 56 |
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; |