summaryrefslogtreecommitdiff
path: root/daemon/gdm-session-relay.c
diff options
context:
space:
mode:
authorWilliam Jon McCann <mccann@src.gnome.org>2007-06-21 20:04:37 +0000
committerWilliam Jon McCann <mccann@src.gnome.org>2007-06-21 20:04:37 +0000
commit85edd92d6de2f2b2e03fcd1097ef199df11c5aa8 (patch)
treed2c522664a1c3922a5a55dd25b911022d5b8bf7d /daemon/gdm-session-relay.c
parent4f1952f28fae19083b80e676c930e0ef3469e179 (diff)
downloadgdm-85edd92d6de2f2b2e03fcd1097ef199df11c5aa8.tar.gz
Make cancellation work. Fix up the signal handler and add backtraces.
svn path=/branches/mccann-gobject/; revision=5012
Diffstat (limited to 'daemon/gdm-session-relay.c')
-rw-r--r--daemon/gdm-session-relay.c34
1 files changed, 32 insertions, 2 deletions
diff --git a/daemon/gdm-session-relay.c b/daemon/gdm-session-relay.c
index ea636faf..10ec1ca4 100644
--- a/daemon/gdm-session-relay.c
+++ b/daemon/gdm-session-relay.c
@@ -186,9 +186,9 @@ gdm_session_relay_select_user (GdmSessionRelay *session_relay,
}
void
-gdm_session_relay_reset (GdmSessionRelay *session_relay)
+gdm_session_relay_cancel (GdmSessionRelay *session_relay)
{
- send_dbus_void_signal (session_relay, "Reset");
+ send_dbus_void_signal (session_relay, "Cancelled");
}
/* Note: Use abstract sockets like dbus does by default on Linux. Abstract
@@ -391,6 +391,28 @@ handle_ready (GdmSessionRelay *session_relay,
}
static DBusHandlerResult
+handle_reset (GdmSessionRelay *session_relay,
+ DBusConnection *connection,
+ DBusMessage *message)
+{
+ DBusMessage *reply;
+ DBusError error;
+
+ dbus_error_init (&error);
+
+ g_debug ("Reset");
+
+ reply = dbus_message_new_method_return (message);
+ dbus_connection_send (connection, reply, NULL);
+ dbus_message_unref (reply);
+
+ /* FIXME: */
+ /*g_signal_emit (session_relay, signals [RESET], 0);*/
+
+ return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+static DBusHandlerResult
session_handle_child_message (DBusConnection *connection,
DBusMessage *message,
void *user_data)
@@ -411,6 +433,8 @@ session_handle_child_message (DBusConnection *connection,
return handle_session_started (session_relay, connection, message);
} else if (dbus_message_is_method_call (message, GDM_SESSION_RELAY_DBUS_INTERFACE, "Ready")) {
return handle_ready (session_relay, connection, message);
+ } else if (dbus_message_is_method_call (message, GDM_SESSION_RELAY_DBUS_INTERFACE, "Reset")) {
+ return handle_reset (session_relay, connection, message);
}
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
@@ -472,6 +496,12 @@ do_introspect (DBusConnection *connection,
" <signal name=\"SessionSelected\">\n"
" <arg name=\"session\" type=\"s\"/>\n"
" </signal>\n"
+ " <signal name=\"UserSelected\">\n"
+ " <arg name=\"session\" type=\"s\"/>\n"
+ " </signal>\n"
+ " <signal name=\"Cancelled\">\n"
+ " <arg name=\"session\" type=\"s\"/>\n"
+ " </signal>\n"
" </interface>\n");
reply = dbus_message_new_method_return (message);