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; }
jint EXPORT_ME Java_com_beloko_opengames_prboom_NativeLib_startserver( JNIEnv* env, jobject thiz,jobjectArray argsArray,jstring doom_path_ ) { 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++; } doom_path = (char *)(env)->GetStringUTFChars( doom_path_, 0); LOGI("doom_path = %s",getDoomPath()); chdir(getDoomPath()); putenv("TIMIDITY_CFG=../timidity.cfg"); server_main(argc,argv); }
const char *I_DoomExeDir(void) { static char *base; if (!base) // cache multiple requests { #ifdef ANDROID char *home = getDoomPath(); #else char *home = getenv("HOME"); #endif size_t len = strlen(home); base = malloc(len + strlen(prboom_dir) + 1); strcpy(base, home); // I've had trouble with trailing slashes before... if (base[len-1] == '/') base[len-1] = 0; strcat(base, prboom_dir); mkdir(base, S_IRUSR | S_IWUSR | S_IXUSR); // Make sure it exists } return base; }