示例#1
0
文件: lxdm.c 项目: carlodoro88/lxdm
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;
}
示例#2
0
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;
}