int main(int argc, char **argv) { int ret; struct kmscon_app app; ret = conf_parse_argv(argc, argv); if (ret) goto err_out; if (conf_global.exit) return EXIT_SUCCESS; if (!conf_global.debug && !conf_global.verbose && conf_global.silent) log_set_config(&LOG_CONFIG_WARNING(0, 0, 0, 0)); else log_set_config(&LOG_CONFIG_INFO(conf_global.debug, conf_global.verbose)); log_print_init("kmscon"); memset(&app, 0, sizeof(app)); ret = setup_app(&app); if (ret) goto err_out; if (conf_global.switchvt) { ret = kmscon_vt_enter(app.vt); if (ret) log_warn("cannot enter VT"); } ev_eloop_run(app.eloop, -1); if (conf_global.switchvt) { /* The VT subsystem needs to acknowledge the VT-leave so if it * returns -EINPROGRESS we need to wait for the VT-leave SIGUSR2 * signal to arrive. Therefore, we use a separate eloop object * which is used by the VT system only. Therefore, waiting on * this eloop allows us to safely wait 50ms for the SIGUSR2 to * arrive. * We use a timeout of 100ms to avoid haning on exit. * We could also wait on app.eloop but this would allow other * subsystems to continue receiving events and this is not what * we want. */ app.exit = true; ret = kmscon_vt_leave(app.vt); if (ret == -EINPROGRESS) ev_eloop_run(app.vt_eloop, 50); } destroy_app(&app); log_info("exiting"); return EXIT_SUCCESS; err_out: log_err("cannot initialize kmscon, errno %d: %s", ret, strerror(-ret)); return -ret; }
int main(int argc, char **argv) { int ret; struct uvtd_app app; log_set_config(&LOG_CONFIG_INFO(1, 1)); log_print_init("uvtd"); memset(&app, 0, sizeof(app)); ret = setup_app(&app); if (ret) goto err_out; ev_eloop_run(app.eloop, -1); ret = 0; destroy_app(&app); err_out: if (ret) log_err("cannot initialize uvtd, errno %d: %s", ret, strerror(-ret)); log_info("exiting"); return -ret; }
int main(int argc, char** argv) { dpy = XOpenDisplay(NULL); if(!dpy) die(ERR_CANNOT_OPEN_DISPLAY, "Cannot open display!\n"); setup_app(); check_features(); setup_x(); setup_gl(); start(); clean(); return 0; }
int main(int argc, char** argv) { glutInit(&argc, argv); setup_app(); setup_menu(); setup_scene(); pi_setup(); glutTimerFunc(0, render_loop, 0); glutTimerFunc(0, logic_loop, 0); glutTimerFunc(0, ai_loop, 0); glutMainLoop(); return 0; }
int main(void) { setup_app(); app_event_loop(); teardown_app(); }