capture_dev_t *device_open(char *devname, capture_func callback_func, void *callback_ctx) { int input_index = -1; v4l_device_t *dev; int fd; /* Get optionnal device name and/or input number */ if ( (devname != NULL) && (*devname != '\0') ) { char *s_input; devname = strdup(devname); s_input = strrchr(devname, ':'); if ( s_input != NULL ) { *(s_input++) = '\0'; input_index = atoi(s_input); } if ( *devname == '\0' ) { free(devname); devname = NULL; } } if ( (devname == NULL) || (*devname == '\0') ) { devname = strdup(device_default); } fd = device_init_dev(devname); if ( fd >= 0 ) { dev = (v4l_device_t *) malloc(sizeof(v4l_device_t)); memset(dev, 0, sizeof(v4l_device_t)); capture_dev_set(CAPTURE_DEV(dev), devname); } free(devname); if ( fd < 0 ) return NULL; dev->fd = fd; dev->read_in[0] = -1; dev->read_in[1] = -1; dev->read_out[0] = -1; dev->read_out[1] = -1; /* Clear timing measurement */ fps_init(&dev->fps); /* Init capture capabilities */ if ( device_init_caps(dev) ) { device_close(CAPTURE_DEV(dev)); return NULL; } /* Switch video input */ if ( device_init_input(dev, input_index) ) { device_close(CAPTURE_DEV(dev)); return NULL; } /* Init pixel encoding */ if ( device_init_format(dev) ) { device_close(CAPTURE_DEV(dev)); return NULL; } /* Setup I/O events callbacks */ dev->callback_func = callback_func; dev->callback_ctx = callback_ctx; return CAPTURE_DEV(dev); }
/** * @brief The entry point of Naev. * * @param[in] argc Number of arguments. * @param[in] argv Array of argc arguments. * @return EXIT_SUCCESS on success. */ int main( int argc, char** argv ) { char buf[PATH_MAX]; /* Save the binary path. */ binary_path = strdup(argv[0]); /* Print the version */ LOG( " "APPNAME" v%s", naev_version(0) ); #ifdef GIT_COMMIT DEBUG( " git HEAD at " GIT_COMMIT ); #endif /* GIT_COMMIT */ /* Initializes SDL for possible warnings. */ SDL_Init(0); /* Initialize the threadpool */ threadpool_init(); /* Set up debug signal handlers. */ debug_sigInit(); /* Must be initialized before input_init is called. */ if (SDL_InitSubSystem(SDL_INIT_VIDEO) < 0) { WARN("Unable to initialize SDL Video: %s", SDL_GetError()); return -1; } /* Get desktop dimensions. */ #if SDL_VERSION_ATLEAST(1,2,10) const SDL_VideoInfo *vidinfo = SDL_GetVideoInfo(); gl_screen.desktop_w = vidinfo->current_w; gl_screen.desktop_h = vidinfo->current_h; #else /* #elif SDL_VERSION_ATLEAST(1,2,10) */ gl_screen.desktop_w = 0; gl_screen.desktop_h = 0; #endif /* #elif SDL_VERSION_ATLEAST(1,2,10) */ /* We'll be parsing XML. */ LIBXML_TEST_VERSION xmlInitParser(); /* Input must be initialized for config to work. */ input_init(); conf_setDefaults(); /* set the default config values */ /* * Attempts to load the data path from datapath.lua * At this early point in the load process, the binary path * is the only place likely to be checked. */ conf_loadConfigPath(); /* Parse the user data path override first. */ conf_parseCLIPath( argc, argv ); /* Create the home directory if needed. */ if (nfile_dirMakeExist("%s", nfile_configPath())) WARN("Unable to create config directory '%s'", nfile_configPath()); /* Set the configuration. */ nsnprintf(buf, PATH_MAX, "%s"CONF_FILE, nfile_configPath()); #if HAS_UNIX /* TODO get rid of this cruft ASAP. */ int oldconfig = 0; if (!nfile_fileExists( buf )) { char *home, buf2[PATH_MAX]; home = SDL_getenv( "HOME" ); if (home != NULL) { nsnprintf( buf2, PATH_MAX, "%s/.naev/"CONF_FILE, home ); if (nfile_fileExists( buf2 )) oldconfig = 1; } } #endif /* HAS_UNIX */ conf_loadConfig(buf); /* Lua to parse the configuration file */ conf_parseCLI( argc, argv ); /* parse CLI arguments */ /* Enable FPU exceptions. */ #if defined(HAVE_FEENABLEEXCEPT) && defined(DEBUGGING) if (conf.fpu_except) feenableexcept( FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW ); #endif /* defined(HAVE_FEENABLEEXCEPT) && defined(DEBUGGING) */ /* Open data. */ if (ndata_open() != 0) ERR("Failed to open ndata."); /* Load the start info. */ if (start_load()) ERR("Failed to load module start data."); /* Load the data basics. */ LOG(" %s", ndata_name()); DEBUG(); /* Display the SDL Version. */ print_SDLversion(); DEBUG(); /* random numbers */ rng_init(); /* * OpenGL */ if (gl_init()) { /* initializes video output */ ERR("Initializing video output failed, exiting..."); SDL_Quit(); exit(EXIT_FAILURE); } window_caption(); gl_fontInit( NULL, NULL, conf.font_size_def ); /* initializes default font to size */ gl_fontInit( &gl_smallFont, NULL, conf.font_size_small ); /* small font */ /* Display the load screen. */ loadscreen_load(); loadscreen_render( 0., "Initializing subsystems..." ); time_ms = SDL_GetTicks(); /* * Input */ if ((conf.joystick_ind >= 0) || (conf.joystick_nam != NULL)) { if (joystick_init()) WARN("Error initializing joystick input"); if (conf.joystick_nam != NULL) { /* use the joystick name to find a joystick */ if (joystick_use(joystick_get(conf.joystick_nam))) { WARN("Failure to open any joystick, falling back to default keybinds"); input_setDefault(); } free(conf.joystick_nam); } else if (conf.joystick_ind >= 0) /* use a joystick id instead */ if (joystick_use(conf.joystick_ind)) { WARN("Failure to open any joystick, falling back to default keybinds"); input_setDefault(); } } /* * OpenAL - Sound */ if (conf.nosound) { LOG("Sound is disabled!"); sound_disabled = 1; music_disabled = 1; } if (sound_init()) WARN("Problem setting up sound!"); music_choose("load"); /* FPS stuff. */ fps_setPos( 15., (double)(gl_screen.h-15-gl_defFont.h) ); /* Misc graphics init */ if (nebu_init() != 0) { /* Initializes the nebula */ /* An error has happened */ ERR("Unable to initialize the Nebula subsystem!"); /* Weirdness will occur... */ } gui_init(); /* initializes the GUI graphics */ toolkit_init(); /* initializes the toolkit */ map_init(); /* initializes the map. */ cond_init(); /* Initialize conditional subsystem. */ cli_init(); /* Initialize console. */ /* Data loading */ load_all(); /* Generate the CSV. */ if (conf.devcsv) dev_csv(); /* Unload load screen. */ loadscreen_unload(); /* Start menu. */ menu_main(); /* Force a minimum delay with loading screen */ if ((SDL_GetTicks() - time_ms) < NAEV_INIT_DELAY) SDL_Delay( NAEV_INIT_DELAY - (SDL_GetTicks() - time_ms) ); fps_init(); /* initializes the time_ms */ #if HAS_UNIX /* Tell the player to migrate their configuration files out of ~/.naev */ /* TODO get rid of this cruft ASAP. */ if ((oldconfig) && (!conf.datapath)) { char path[PATH_MAX], *script, *home; uint32_t scriptsize; int ret; nsnprintf( path, PATH_MAX, "%s/naev-confupdate.sh", ndata_getDirname() ); home = SDL_getenv("HOME"); ret = dialogue_YesNo( "Warning", "Your configuration files are in a deprecated location and must be migrated:\n" " \er%s/.naev/\e0\n\n" "The update script can likely be found in your Naev data directory:\n" " \er%s\e0\n\n" "Would you like to run it automatically?", home, path ); /* Try to run the script. */ if (ret) { ret = -1; /* Running from ndata. */ if (ndata_getPath() != NULL) { script = ndata_read( "naev-confupdate.sh", &scriptsize ); if (script != NULL) ret = system(script); } /* Running from laid-out files or ndata_read failed. */ if ((nfile_fileExists(path)) && (ret == -1)) { script = nfile_readFile( (int*)&scriptsize, path ); if (script != NULL) ret = system(script); } /* We couldn't find the script. */ if (ret == -1) { dialogue_alert( "The update script was not found at:\n\er%s\e0\n\n" "Please locate and run it manually.", path ); } /* Restart, as the script succeeded. */ else if (!ret) { dialogue_msg( "Update Completed", "Configuration files were successfully migrated. Naev will now restart." ); execv(argv[0], argv); } else { /* I sincerely hope this else is never hit. */ dialogue_alert( "The update script encountered an error. Please exit Naev and move your config and save files manually:\n\n" "\er%s/%s\e0 =>\n \eD%s\e0\n\n" "\er%s/%s\e0 =>\n \eD%s\e0\n\n" "\er%s/%s\e0 =>\n \eD%snebula/\e0\n\n", home, ".naev/conf.lua", nfile_configPath(), home, ".naev/{saves,screenshots}/", nfile_dataPath(), home, ".naev/gen/*.png", nfile_cachePath() ); } } else {
/** LibVisualBitmapView.init() */ JNIEXPORT jboolean JNICALL Java_org_libvisual_android_LibVisualBitmapView_fpsInit(JNIEnv * env, jobject obj) { fps_init(&_v.fps); return JNI_TRUE; }
/** * Initialize and run the game! * @return TRUE if it completed successfully or FALSE otherwise */ static bool initialize_and_run (void) { LOG_INF (POWERMANGA_VERSION); configfile_print (); type_routine_gfx (); if (!inits_game ()) { return FALSE; } #ifdef PNG_EXPORT_ENABLE if (power_conf->extract_to_png) { LOG_INF ("Extracting sprites Powermanga in PNG"); if (!create_dir (EXPORT_DIR)) { return FALSE; } enemies_extract (); shots_extract (); bonus_extract (); energy_gauge_extract (); explosions_extract (); guns_extract (); guardians_extract (); meteors_extract (); satellite_extract (); spaceship_extract (); starfield_extract (); menu_extract (); options_extract (); tlk_games_logo_extract (); sprites_font_extract (); scrolltext_extract (); return TRUE; } #endif #ifdef SHAREWARE_VERSION /* update counter */ Sint32 cpt = counter_shareware_update ("PowerManga", 0, 8); if (cpt >= 8) { /* display first page order */ switch (power_conf->lang) { case FR_LANG: show_page_order (1, "fr", cpt); break; case EN_LANG: show_page_order (1, "en", cpt); break; default: show_page_order (1, "en", cpt); break; } } counter_shareware_free (); #endif fps_init (); main_loop (); fps_print (); #ifdef SHAREWARE_VERSION /* displaying of the third page order */ switch (power_conf->lang) { case FR_LANG: show_page_order (3, "fr", 0); break; case EN_LANG: show_page_order (3, "en", 0); break; default: show_page_order (3, "en", 0); break; } TTF_Quit (); #endif LOG_INF ("Powermanga exited normally"); return TRUE; }