Ejemplo n.º 1
0
Archivo: display.c Proyecto: jpcoles/ZM
void display_start(int argc, char **argv)
{
    glutInit(&argc,argv);

    int glut_parms = GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH;

    if (env.stereo)
        glut_parms |= GLUT_STEREO;

    glutInitDisplayMode(glut_parms);

    //glutInitWindowPosition(100,100);
    glutInitWindowSize(env.screenWidth,env.screenHeight);

    glutCreateWindow("Star Spray");
    viz_init();
    glutMainLoop();
}
Ejemplo n.º 2
0
int
main(int argc, char **argv)
{
	struct event *ev_sigint, *ev_sigterm, *ev_sigchld, *ev_sighup;
	struct glougloud *ggd;
	int op;

	ggd = xcalloc(1, sizeof(struct glougloud));

	addr_aton("127.0.0.1", &ggd->probes.serv_ip);
	addr_aton("127.0.0.1", &ggd->viz.serv_ip);
	ggd->probes.serv_port = GLOUGLOU_PROBE_DEFAULT_PORT;
	ggd->viz.serv_port = GLOUGLOU_VIZ_DEFAULT_PORT;
	ggd->daemonize = 1;
	ggd->logfile = GLOUGLOUD_LOGFILE;
	ggd->loglevel = LOG_WARN;
	ggd->redis.socket_chrooted = "/socket/redis.sock";
	ggd->redis.socket = "/var/lib/glougloud/chroot/socket/redis.sock";

	while ((op = getopt(argc, argv, "Dhl:L:p:P:v")) != -1) {
		switch (op) {
			case 'D':
				ggd->logfile = NULL;
				ggd->daemonize = 0;
				break;
			case 'h':
				usage();
				/* NOTREACHED */
			case 'l':
				if (addr_aton(optarg, &ggd->probes.serv_ip) < 0)
					err(1, "invalid probes server ip");
				break;
			case 'L':
				if (addr_aton(optarg, &ggd->viz.serv_ip) < 0)
					err(1, "invalid vizualisation server ip");
				break;
			case 'p':
				ggd->probes.serv_port = atoi(optarg);
				break;
			case 'P':
				ggd->viz.serv_port = atoi(optarg);
				break;
			case 'v':
				ggd->loglevel++;
				break;
			default:
				usage();
				/* NOTREACHED */
		}
	}

	if (geteuid() != 0)
		errx(1, "must be root");
	log_init(ggd->logfile, ggd->loglevel);
	log_warn("glougloud startup");

	if (redis_init(ggd) < 0)
		log_fatal("init redis failed");
	if (probes_init(ggd) < 0)
		log_fatal("init probes failed");
	if (viz_init(ggd) < 0)
		log_fatal("init viz failed");

	ev_base = event_base_new();
	ev_sigint = evsignal_new(ev_base, SIGINT, sig_handler, NULL);
	ev_sigterm = evsignal_new(ev_base, SIGTERM, sig_handler, NULL);
	ev_sigchld = evsignal_new(ev_base, SIGCHLD, sig_handler, NULL);
	ev_sighup = evsignal_new(ev_base, SIGHUP, sig_handler, NULL);
	evsignal_add(ev_sigint, NULL);
	evsignal_add(ev_sigterm, NULL);
	evsignal_add(ev_sigchld, NULL);
	evsignal_add(ev_sighup, NULL);
	signal(SIGPIPE, SIG_IGN);

	if (ggd->daemonize) {
		ggd->pid = fork();
		log_info("daemonized, pid %d", ggd->pid);
		if (ggd->pid > 0)
			return 0;
	}

	event_base_dispatch(ev_base);

	viz_shutdown();
	probes_shutdown();
	redis_shutdown();

	return 0;
}