static void lxsession_stop(LXSession *s) { if(s->greeter) { ui_drop(); s->greeter=FALSE; } if(s->child>0) { lxcom_del_child_watch(s->child); killpg(s->child, SIGHUP); stop_pid(s->child); s->child = -1; } if( s->server > 0 ) { xconn_clean(s->dpy); } lxdm_auth_session_end(&s->auth); #if HAVE_LIBCK_CONNECTOR if( s->ckc != NULL ) { DBusError error; dbus_error_init(&error); ck_connector_close_session(s->ckc, &error); if(dbus_error_is_set(&error)) { dbus_error_free(&error); } ck_connector_unref(s->ckc); s->ckc=NULL; } #endif s->idle=TRUE; }
int main (int argc, char *argv[]) { CkConnector *connector; int ret; int res; DBusError error; int user; const char *display_device; const char *x11_display; const char *remote_host_name; ret = 1; connector = ck_connector_new (); if (connector == NULL) { printf ("OOM creating CkConnector\n"); goto out; } user = 730; display_device = "/dev/tty3"; x11_display = ":20"; remote_host_name = ""; dbus_error_init (&error); res = ck_connector_open_session_with_parameters (connector, &error, "unix-user", &user, "display-device", &display_device, "x11-display", &x11_display, "remote-host-name", &remote_host_name, NULL); if (! res) { if (dbus_error_is_set (&error)) { printf ("%s\n", error.message); dbus_error_free (&error); } else { printf ("cannot open CK session: OOM, D-Bus system bus not available,\n" "ConsoleKit not available or insufficient privileges.\n"); } goto out; } printf ("Session cookie is '%s'\n", ck_connector_get_cookie (connector)); if (ck_connector_get_runtime_dir (connector, &error) == NULL) { if (dbus_error_is_set (&error)) { printf ("Failed to get XDG_RUNTIME_DIR error is '%s'\n", error.message); dbus_error_free (&error); } else { printf ("Cannot get XDG_RUNTIME_DIR, out of memory error\n"); } } else { printf ("XDG_RUNTIME_DIR is '%s'\n", ck_connector_get_runtime_dir (connector, &error)); } sleep (20); dbus_error_init (&error); if (! ck_connector_close_session (connector, &error)) { if (dbus_error_is_set (&error)) { printf ("%s\n", error.message); dbus_error_free (&error); } else { printf ("Cannot close CK session: OOM, D-Bus system bus not available,\n" "ConsoleKit not available or insufficient privileges.\n"); } goto out; } ret = 0; out: if (connector != NULL) { ck_connector_unref (connector); } return ret; }