diff --git a/project/java/DataDownloader.java b/project/java/DataDownloader.java index 41f600352..e1f597bed 100644 --- a/project/java/DataDownloader.java +++ b/project/java/DataDownloader.java @@ -8,6 +8,7 @@ import android.view.MotionEvent; import android.view.KeyEvent; import android.view.Window; import android.view.WindowManager; +import android.os.Environment; import android.widget.TextView; import org.apache.http.client.methods.*; @@ -149,7 +150,7 @@ class DataDownloader extends Thread //Status.setText( "Connecting to " + Globals.DataDownloadUrl ); outFilesDir = Parent.getFilesDir().getAbsolutePath(); if( Globals.DownloadToSdcard ) - outFilesDir = "/sdcard/app-data/" + Globals.class.getPackage().getName(); + outFilesDir = Environment.getExternalStorageDirectory().getAbsolutePath() + "/app-data/" + Globals.class.getPackage().getName(); DownloadComplete = false; this.start(); } diff --git a/project/java/Globals.java b/project/java/Globals.java index 90dd39e08..754d6ea92 100644 --- a/project/java/Globals.java +++ b/project/java/Globals.java @@ -48,8 +48,6 @@ class Globals { public static int AppTouchscreenKeyboardKeysAmountAutoFire = 1; // Phone-specific config - // It will download app data to /sdcard/alienblaster if set to true, - // otherwise it will download it to /data/data/de.schwardtnet.alienblaster/files public static boolean DownloadToSdcard = true; public static boolean PhoneHasTrackball = false; public static boolean PhoneHasArrowKeys = false; diff --git a/project/java/Video.java b/project/java/Video.java index bcb6ff036..21d8b65c6 100644 --- a/project/java/Video.java +++ b/project/java/Video.java @@ -17,6 +17,7 @@ import android.view.MotionEvent; import android.view.KeyEvent; import android.view.Window; import android.view.WindowManager; +import android.os.Environment; import android.widget.TextView; import java.lang.Thread; @@ -211,7 +212,10 @@ class DemoRenderer extends GLSurfaceView_SDL.Renderer { // Tweak video thread priority, if user selected big audio buffer if(Globals.AudioBufferConfig >= 2) Thread.currentThread().setPriority( (Thread.NORM_PRIORITY + Thread.MIN_PRIORITY) / 2 ); // Lower than normal - nativeInit(Globals.CommandLine); // Calls main() and never returns, hehe - we'll call eglSwapBuffers() from native code + nativeInit( Globals.DownloadToSdcard ? + Environment.getExternalStorageDirectory().getAbsolutePath() + "/app-data/" + Globals.class.getPackage().getName() : + context.getFilesDir().getAbsolutePath(), + Globals.CommandLine); // Calls main() and never returns, hehe - we'll call eglSwapBuffers() from native code System.exit(0); // The main() returns here - I don't bother with deinit stuff, just terminate process } @@ -264,7 +268,7 @@ class DemoRenderer extends GLSurfaceView_SDL.Renderer { }; private native void nativeInitJavaCallbacks(); - private native void nativeInit(String CommandLine); + private native void nativeInit(String CurrentPath, String CommandLine); private native void nativeResize(int w, int h, int keepAspectRatio); private native void nativeDone(); private native void nativeGlContextLost(); diff --git a/project/jni/application/commandergenius b/project/jni/application/commandergenius index 3add96a0e..45476807e 160000 --- a/project/jni/application/commandergenius +++ b/project/jni/application/commandergenius @@ -1 +1 @@ -Subproject commit 3add96a0eed06a4438bac6324a3aee6be550402b +Subproject commit 45476807e1b6f407446b2b87bb275009761398e2 diff --git a/project/jni/application/src b/project/jni/application/src index 59d41f41e..c5a9d291d 120000 --- a/project/jni/application/src +++ b/project/jni/application/src @@ -1 +1 @@ -fheroes2 \ No newline at end of file +commandergenius \ No newline at end of file diff --git a/project/jni/sdl_main/sdl_main.c b/project/jni/sdl_main/sdl_main.c index d61979272..67a8e5d7e 100644 --- a/project/jni/sdl_main/sdl_main.c +++ b/project/jni/sdl_main/sdl_main.c @@ -28,7 +28,7 @@ static int isSdcardUsed = 0; extern C_LINKAGE void -JAVA_EXPORT_NAME(DemoRenderer_nativeInit) ( JNIEnv* env, jobject thiz, jstring cmdline ) +JAVA_EXPORT_NAME(DemoRenderer_nativeInit) ( JNIEnv* env, jobject thiz, jstring jcurdir, jstring cmdline ) { int i = 0; char curdir[PATH_MAX] = ""; @@ -49,6 +49,12 @@ JAVA_EXPORT_NAME(DemoRenderer_nativeInit) ( JNIEnv* env, jobject thiz, jstring strcat(curdir, SDL_CURDIR_PATH); strcat(curdir, "/files"); } + + jstr = (*env)->GetStringUTFChars(env, jcurdir, NULL); + if (jstr != NULL && strlen(jstr) > 0) + strcpy(curdir, jstr); + (*env)->ReleaseStringUTFChars(env, jcurdir, jstr); + if( realpath(curdir, realcurdir) == NULL ) strcpy(realcurdir, curdir); chdir(realcurdir); @@ -94,9 +100,6 @@ JAVA_EXPORT_NAME(DemoRenderer_nativeInit) ( JNIEnv* env, jobject thiz, jstring for( i = 0; i < argc; i++ ) __android_log_print(ANDROID_LOG_INFO, "libSDL", "param %d = \"%s\"", i, argv[i]); - //freopen("/dev/null", "w", stdout); // It crashes on Smartq V7 anyway, inside these lines - //freopen("/dev/null", "w", stderr); - main( argc, argv ); };