Beispiel #1
0
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);
}
Beispiel #2
0
/**
 * @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;
}
Beispiel #4
0
/**
 * 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;
}