int main(int argc, char **argv) { LayerPtr lay; ConsoleControllerPtr con; #ifdef WITH_JAVASCRIPT bool interactive = true; #endif //WITH_JAVASCRIPT freej = MakeShared<Context>(); notice("%s version %s free the veejay", PACKAGE, VERSION); act("2001-2009 RASTASOFT :: %s", PACKAGE_URL); act("----------------------------------------------"); cmdline(argc, argv); set_debug(debug_level); // create SDL screen by default at selected size screen = Factory<ViewPort>::get_instance("Screen", screen_name); // screen = new SdlScreen(); if(!screen) { error("no screen can be opened"); exit(1); } screen->init(width, height, 32); setSelectedScreen(screen); // add the screen to the context freej->add_screen(screen); if(fullscreen) screen->fullscreen(); /* sets realtime priority to maximum allowed for SCHED_RR (POSIX.1b) this hangs on some linux kernels - darwin doesn't even bothers with it anybody knows what's wrong when you turn it on? ouch! it hurts :| set_rtpriority is inside jutils.cpp if(set_rtpriority(true)) notice("running as root: high priority realtime scheduling allowed."); */ /* initialize the S-Lang text Console */ if(!noconsole) { if(getenv("TERM")) { con = MakeShared<SlwConsole>(freej); freej->register_controller(con); GlobalLogger::register_logger(con); con->console_init(); } } #ifdef WITH_JAVASCRIPT // load default settings config_check("keyboard.js"); /* execute javascript */ if(javascript[0]) { interactive = false; open_script(javascript); // TODO: quit here when script failed?? if(freej->isQuitting()) { // freej.close(); // here calling close directly we double the destructor // fixed omitting the explicit close() call // but would be better to make the destructor reentrant exit(1); } else { interactive = true; } } /* execute processing */ if(processing[0]) { interactive = false; char tmp[1024]; // parse includes our extra processing.js library snprintf(tmp, 1023, "include(\"processing.js\");script = read_file(\"%s\");Processing(script);", processing); freej->js->parse(tmp); if(freej->isQuitting()) { exit(1); } else { interactive = true; } } #endif //WITH_JAVASCRIPT // Set fps freej->setFps(fps); // TODO freej->setStartRunning(startstate); /* create layers requested on commandline */ { char *l, *p, *pp = layer_files; while(cli_chars > 0) { p = pp; while(*p != '#' && cli_chars > 0) { p++; cli_chars--; } l = p + 1; if(cli_chars <= 0) break; *p = '\0'; func("creating layer for file %s", pp); lay = freej->open(pp); // hey, this already init and open the layer !! if(lay) { screen->add_layer(lay); } pp = l; } } freej->start(); /* initialize the S-Lang text Console */ if(!noconsole) { if(getenv("TERM")) { freej->rem_controller(con); GlobalLogger::unregister_logger(con); } } return 0; }