|
|
ce6ce5c |
--- gdm-2.26.1/gui/simple-greeter/greeter-main.c 2009-02-19 21:45:09.000000000 -0500
|
|
|
ce6ce5c |
+++ hacked/gui/simple-greeter/greeter-main.c 2009-04-24 20:21:43.560229712 -0400
|
|
|
ce6ce5c |
@@ -155,6 +155,46 @@
|
|
|
ce6ce5c |
return (sm_proxy != NULL);
|
|
|
ce6ce5c |
}
|
|
|
ce6ce5c |
|
|
|
ce6ce5c |
+static void
|
|
|
ce6ce5c |
+stop_cb (gpointer data)
|
|
|
ce6ce5c |
+{
|
|
|
ce6ce5c |
+ gtk_main_quit ();
|
|
|
ce6ce5c |
+}
|
|
|
ce6ce5c |
+
|
|
|
ce6ce5c |
+static gboolean
|
|
|
ce6ce5c |
+end_session_response (gboolean is_okay, const gchar *reason)
|
|
|
ce6ce5c |
+{
|
|
|
ce6ce5c |
+ gboolean ret;
|
|
|
ce6ce5c |
+ GError *error = NULL;
|
|
|
ce6ce5c |
+
|
|
|
ce6ce5c |
+ ret = dbus_g_proxy_call (client_proxy, "EndSessionResponse",
|
|
|
ce6ce5c |
+ &error,
|
|
|
ce6ce5c |
+ G_TYPE_BOOLEAN, is_okay,
|
|
|
ce6ce5c |
+ G_TYPE_STRING, reason,
|
|
|
ce6ce5c |
+ G_TYPE_INVALID,
|
|
|
ce6ce5c |
+ G_TYPE_INVALID);
|
|
|
ce6ce5c |
+
|
|
|
ce6ce5c |
+ if (!ret) {
|
|
|
ce6ce5c |
+ g_warning ("Failed to send session response %s", error->message);
|
|
|
ce6ce5c |
+ g_error_free (error);
|
|
|
ce6ce5c |
+ }
|
|
|
ce6ce5c |
+
|
|
|
ce6ce5c |
+ return ret;
|
|
|
ce6ce5c |
+}
|
|
|
ce6ce5c |
+
|
|
|
ce6ce5c |
+static void
|
|
|
ce6ce5c |
+query_end_session_cb (guint flags, gpointer data)
|
|
|
ce6ce5c |
+{
|
|
|
ce6ce5c |
+ end_session_response (TRUE, NULL);
|
|
|
ce6ce5c |
+}
|
|
|
ce6ce5c |
+
|
|
|
ce6ce5c |
+static void
|
|
|
ce6ce5c |
+end_session_cb (guint flags, gpointer data)
|
|
|
ce6ce5c |
+{
|
|
|
ce6ce5c |
+ end_session_response (TRUE, NULL);
|
|
|
ce6ce5c |
+ gtk_main_quit ();
|
|
|
ce6ce5c |
+}
|
|
|
ce6ce5c |
+
|
|
|
ce6ce5c |
static gboolean
|
|
|
ce6ce5c |
register_client (void)
|
|
|
ce6ce5c |
{
|
|
|
ce6ce5c |
@@ -186,6 +226,19 @@
|
|
|
ce6ce5c |
SM_DBUS_NAME,
|
|
|
ce6ce5c |
client_id,
|
|
|
ce6ce5c |
SM_CLIENT_DBUS_INTERFACE);
|
|
|
ce6ce5c |
+
|
|
|
ce6ce5c |
+ dbus_g_proxy_add_signal (client_proxy, "Stop", G_TYPE_INVALID);
|
|
|
ce6ce5c |
+ dbus_g_proxy_connect_signal (client_proxy, "Stop",
|
|
|
ce6ce5c |
+ G_CALLBACK (stop_cb), NULL, NULL);
|
|
|
ce6ce5c |
+
|
|
|
ce6ce5c |
+ dbus_g_proxy_add_signal (client_proxy, "QueryEndSession", G_TYPE_UINT, G_TYPE_INVALID);
|
|
|
ce6ce5c |
+ dbus_g_proxy_connect_signal (client_proxy, "QueryEndSession",
|
|
|
ce6ce5c |
+ G_CALLBACK (query_end_session_cb), NULL, NULL);
|
|
|
ce6ce5c |
+
|
|
|
ce6ce5c |
+ dbus_g_proxy_add_signal (client_proxy, "EndSession", G_TYPE_UINT, G_TYPE_INVALID);
|
|
|
ce6ce5c |
+ dbus_g_proxy_connect_signal (client_proxy, "EndSession",
|
|
|
ce6ce5c |
+ G_CALLBACK (end_session_cb), NULL, NULL);
|
|
|
ce6ce5c |
+
|
|
|
ce6ce5c |
g_unsetenv ("DESKTOP_AUTOSTART_ID");
|
|
|
ce6ce5c |
|
|
|
ce6ce5c |
return TRUE;
|