jint EXPORT_ME JAVA_FUNC(init)(JNIEnv* env, jobject thiz, jobject act, jobjectArray argsArray, jstring game_path_, jstring lib_path_, jstring app_path_, jstring abi, jstring abi_alt) { // getGlobalClasses(env); //set_check_len(3840538); activity_ = &act; env_ = env; argv[0] = "quake"; int argCount = (env)->GetArrayLength(argsArray); LOGI("argCount = %d", argCount); for (int i = 0; i < argCount; i++) { jstring string = (jstring)(env)->GetObjectArrayElement(argsArray, i); argv[argc] = (char *) (env)->GetStringUTFChars(string, 0); LOGI("arg = %s", argv[argc]); argc++; } game_path = (char *) (env)->GetStringUTFChars(game_path_, 0); lib_path = (char *) (env)->GetStringUTFChars(lib_path_, 0); app_path = (char *) (env)->GetStringUTFChars(app_path_, 0); android_abi = (char *) (env)->GetStringUTFChars(abi, 0); android_abi_alt = (char *) (env)->GetStringUTFChars(abi_alt, 0); LOGI("game_path = %s", getGamePath()); LOGI("lib_path = %s", getLibPath()); LOGI("app_path = %s", getAppPath()); LOGI("android_abi = %s", getAndroidAbi()); LOGI("android_abi_alt = %s", getAndroidAbiAlt()); chdir(getGamePath()); //self_crc_check((string(getLibPath()) + "/libjk3.so").c_str()); PortableInit(argc, argv); /* const char * p = env->GetStringUTFChars(graphics_dir,NULL); graphicpath = std::string(p); initControls(640,-480,graphicpath.c_str(),(graphicpath + "/game_controls.xml").c_str());*/ return 0; }
jint EXPORT_ME JAVA_FUNC(init) ( JNIEnv* env, jobject thiz,jstring graphics_dir,jint mem_mb,jobjectArray argsArray,jint lowRes,jstring game_path_ ) { #ifdef ANTI_HACK getGlobalClasses(env); #endif env_ = env; /* if (lowRes) Android_SetGameResolution(320,240); else Android_SetGameResolution(640,400); */ //Android_SetGameResolution(320,200); Android_SetGameResolution(320,240); //Android_SetGameResolution(640,480); argv[0] = "quake"; int argCount = (env)->GetArrayLength( argsArray); LOGI("argCount = %d",argCount); for (int i=0; i<argCount; i++) { jstring string = (jstring) (env)->GetObjectArrayElement( argsArray, i); argv[argc] = (char *)(env)->GetStringUTFChars( string, 0); LOGI("arg = %s",argv[argc]); argc++; } game_path = (char *)(env)->GetStringUTFChars( game_path_, 0); LOGI("game_path = %s",getGamePath()); //Needed for ecwolf to run //home_env = "HOME=/" + game_path; //putenv(home_env.c_str()); setenv("HOME", getGamePath(),1); putenv("TIMIDITY_CFG=../timidity.cfg"); chdir(getGamePath()); const char * p = env->GetStringUTFChars(graphics_dir,NULL); graphicpath = std::string(p); initControls(android_screen_width,-android_screen_height,graphicpath.c_str()); SDL_SetSwapBufferCallBack(frameControls); //Now done in java to keep context etc SDL_SwapBufferPerformsSwap(false); PortableInit(argc,argv); //Never returns!! return 0; }
jint EXPORT_ME Java_com_beloko_opengames_prboom_NativeLib_init( JNIEnv* env, jobject thiz,jstring graphics_dir,jint mem_mb,jobjectArray argsArray,jint renderer,jstring doom_path_,jint snd_buffer_size ) { env_ = env; curRenderer = renderer; argv[0] = "quake"; int argCount = (env)->GetArrayLength( argsArray); LOGI("argCount = %d",argCount); for (int i=0; i<argCount; i++) { jstring string = (jstring) (env)->GetObjectArrayElement( argsArray, i); argv[argc] = (char *)(env)->GetStringUTFChars( string, 0); LOGI("arg = %s",argv[argc]); argc++; } Android_SetGameResolution(320,240); ANDROID_SAMPLECOUNT = snd_buffer_size; doom_path = (char *)(env)->GetStringUTFChars( doom_path_, 0); LOGI("doom_path = %s",getDoomPath()); chdir(getDoomPath()); putenv("TIMIDITY_CFG=../timidity.cfg"); PortableInit(argc,argv); const char * p = env->GetStringUTFChars(graphics_dir,NULL); graphicpath = std::string(p); initControls(android_screen_width,-android_screen_height,graphicpath.c_str(),(graphicpath + "/prdoom.xml").c_str()); #ifdef ANTI_HACK getGlobalClasses(env_); #endif if (renderer != REND_SOFT) SDL_SetSwapBufferCallBack(frameControls); if (renderer == REND_SOFT)// In soft mode SDL calls swap buffer, disable so it does not flicker SDL_SwapBufferPerformsSwap(false); return 0; }