diff --git a/.gitmodules b/.gitmodules index 66b3fa917..8cb714ad2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -71,3 +71,6 @@ [submodule "project/jni/application/xserver/pulseaudio"] path = project/jni/application/xserver/pulseaudio url = git@github.com:pelya/pulseaudio-android.git +[submodule "project/jni/application/bochs/bochs"] + path = project/jni/application/bochs/bochs + url = git@github.com:lubomyr/bochs.git diff --git a/project/java/DataDownloader.java b/project/java/DataDownloader.java index ef78fa037..a66b417e7 100644 --- a/project/java/DataDownloader.java +++ b/project/java/DataDownloader.java @@ -265,6 +265,20 @@ class DataDownloader extends Thread if( ! matched ) throw new IOException(); Status.setText( res.getString(R.string.download_unneeded) ); + for( int i = 1; i < downloadUrls.length; i++ ) + { + if( downloadUrls[i].indexOf("obb:") == 0 ) // APK expansion file provided by Google Play + { + String url = getObbFilePath(downloadUrls[i]); + if (new File(url).length() > 256) + { + Writer writer = new OutputStreamWriter(new FileOutputStream(url), "UTF-8"); + writer.write("Extracted and truncated\n"); + writer.close(); + Log.i("SDL", "Truncated file from expansion: " + url); + } + } + } return true; } catch ( IOException e ) { forceOverwrite = true; @@ -322,9 +336,7 @@ class DataDownloader extends Thread Status.setText( downloadCount + "/" + downloadTotal + ": " + res.getString(R.string.connecting_to, url) ); if( url.indexOf("obb:") == 0 ) // APK expansion file provided by Google Play { - url = url.substring("obb:".length()); - url = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Android/obb/" + - Parent.getPackageName() + "/" + url + "." + Parent.getPackageName() + ".obb"; + url = getObbFilePath(url); InputStream stream1 = null; try { stream1 = new FileInputStream(url); @@ -764,7 +776,13 @@ class DataDownloader extends Thread { return outFilesDir + "/" + filename; }; - + + private String getObbFilePath(final String url) + { + return Environment.getExternalStorageDirectory().getAbsolutePath() + "/Android/obb/" + + Parent.getPackageName() + "/" + url.substring("obb:".length()) + "." + Parent.getPackageName() + ".obb"; + } + private static DefaultHttpClient HttpWithDisabledSslCertCheck() { return new DefaultHttpClient(); diff --git a/project/java/SettingsMenu.java b/project/java/SettingsMenu.java index c0a8705f0..c1ceddf12 100644 --- a/project/java/SettingsMenu.java +++ b/project/java/SettingsMenu.java @@ -247,6 +247,7 @@ class SettingsMenu new SettingsMenuKeyboard.RemapHwKeysConfig(), new SettingsMenuKeyboard.ScreenGesturesConfig(), new SettingsMenuMisc.VideoSettingsConfig(), + new SettingsMenuMisc.CommandlineConfig(), new SettingsMenuMisc.ResetToDefaultsConfig(), new OkButton(), }; diff --git a/project/java/SettingsMenuMisc.java b/project/java/SettingsMenuMisc.java index 521ca44b6..db950bd23 100644 --- a/project/java/SettingsMenuMisc.java +++ b/project/java/SettingsMenuMisc.java @@ -74,6 +74,7 @@ import android.hardware.SensorEventListener; import android.hardware.SensorEvent; import android.hardware.Sensor; import android.widget.Toast; +import android.text.InputType; class SettingsMenuMisc extends SettingsMenu @@ -148,38 +149,6 @@ class SettingsMenuMisc extends SettingsMenu { Globals.DataDir = edit.getText().toString(); dialog.dismiss(); - showCommandLineConfig(p); - } - }); - builder.setOnCancelListener(new DialogInterface.OnCancelListener() - { - public void onCancel(DialogInterface dialog) - { - goBack(p); - } - }); - AlertDialog alert = builder.create(); - alert.setOwnerActivity(p); - alert.show(); - } - static void showCommandLineConfig(final MainActivity p) - { - AlertDialog.Builder builder = new AlertDialog.Builder(p); - builder.setTitle(p.getResources().getString(R.string.storage_commandline)); - - final EditText edit = new EditText(p); - edit.setFocusableInTouchMode(true); - edit.setFocusable(true); - edit.setText(Globals.CommandLine); - builder.setView(edit); - - builder.setPositiveButton(p.getResources().getString(R.string.ok), new DialogInterface.OnClickListener() - { - public void onClick(DialogInterface dialog, int item) - { - Globals.CommandLine = edit.getText().toString(); - dialog.dismiss(); - goBack(p); } }); builder.setOnCancelListener(new DialogInterface.OnCancelListener() @@ -569,6 +538,48 @@ class SettingsMenuMisc extends SettingsMenu } } + static class CommandlineConfig extends Menu + { + String title(final MainActivity p) + { + return p.getResources().getString(R.string.storage_commandline); + } + void run (final MainActivity p) + { + AlertDialog.Builder builder = new AlertDialog.Builder(p); + builder.setTitle(p.getResources().getString(R.string.storage_commandline)); + + final EditText edit = new EditText(p); + edit.setFocusableInTouchMode(true); + edit.setFocusable(true); + edit.setText(Globals.CommandLine.replace(" ", "\n").replace(" ", " ")); + edit.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_MULTI_LINE | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); + edit.setMinLines(2); + //edit.setMaxLines(100); + builder.setView(edit); + + builder.setPositiveButton(p.getResources().getString(R.string.ok), new DialogInterface.OnClickListener() + { + public void onClick(DialogInterface dialog, int item) + { + Globals.CommandLine = edit.getText().toString().replace(" ", " ").replace("\n", " "); + dialog.dismiss(); + goBack(p); + } + }); + builder.setOnCancelListener(new DialogInterface.OnCancelListener() + { + public void onCancel(DialogInterface dialog) + { + goBack(p); + } + }); + AlertDialog alert = builder.create(); + alert.setOwnerActivity(p); + alert.show(); + } + } + static class ResetToDefaultsConfig extends Menu { String title(final MainActivity p) diff --git a/project/jni/application/bochs/.gitignore b/project/jni/application/bochs/.gitignore new file mode 100644 index 000000000..a70e5d2a6 --- /dev/null +++ b/project/jni/application/bochs/.gitignore @@ -0,0 +1 @@ +/*.so diff --git a/project/jni/application/bochs/AndroidAppSettings.cfg b/project/jni/application/bochs/AndroidAppSettings.cfg new file mode 120000 index 000000000..6a48054af --- /dev/null +++ b/project/jni/application/bochs/AndroidAppSettings.cfg @@ -0,0 +1 @@ +bochs/android/bochs/AndroidAppSettings.cfg \ No newline at end of file diff --git a/project/jni/application/bochs/AndroidBuild.sh b/project/jni/application/bochs/AndroidBuild.sh new file mode 120000 index 000000000..bb9455efc --- /dev/null +++ b/project/jni/application/bochs/AndroidBuild.sh @@ -0,0 +1 @@ +bochs/android/bochs/AndroidBuild.sh \ No newline at end of file diff --git a/project/jni/application/bochs/AndroidData b/project/jni/application/bochs/AndroidData new file mode 120000 index 000000000..63de56800 --- /dev/null +++ b/project/jni/application/bochs/AndroidData @@ -0,0 +1 @@ +bochs/android/bochs/AndroidData \ No newline at end of file diff --git a/project/jni/application/bochs/bochs b/project/jni/application/bochs/bochs new file mode 160000 index 000000000..b8c3ab277 --- /dev/null +++ b/project/jni/application/bochs/bochs @@ -0,0 +1 @@ +Subproject commit b8c3ab2779e8e29ce5156eae589070a56d100a0c diff --git a/project/jni/application/bochs/icon.png b/project/jni/application/bochs/icon.png new file mode 120000 index 000000000..17bdbb5c3 --- /dev/null +++ b/project/jni/application/bochs/icon.png @@ -0,0 +1 @@ +bochs/android/bochs/icon.png \ No newline at end of file diff --git a/project/jni/application/setEnvironment-armeabi-v7a-hard.sh b/project/jni/application/setEnvironment-armeabi-v7a-hard.sh index 237db8586..5c4601b3f 100755 --- a/project/jni/application/setEnvironment-armeabi-v7a-hard.sh +++ b/project/jni/application/setEnvironment-armeabi-v7a-hard.sh @@ -18,8 +18,6 @@ NDK=`which ndk-build` NDK=`dirname $NDK` NDK=`readlink -f $NDK` -grep "64.bit" "$NDK/RELEASE.TXT" >/dev/null 2>&1 && MYARCH="${MYARCH}_64" - #echo NDK $NDK GCCPREFIX=arm-linux-androideabi [ -z "$NDK_TOOLCHAIN_VERSION" ] && NDK_TOOLCHAIN_VERSION=4.9 diff --git a/project/jni/application/setEnvironment-armeabi-v7a.sh b/project/jni/application/setEnvironment-armeabi-v7a.sh index 1dddc6e4e..d86237743 100755 --- a/project/jni/application/setEnvironment-armeabi-v7a.sh +++ b/project/jni/application/setEnvironment-armeabi-v7a.sh @@ -18,8 +18,6 @@ NDK=`which ndk-build` NDK=`dirname $NDK` NDK=`readlink -f $NDK` -grep "64.bit" "$NDK/RELEASE.TXT" >/dev/null 2>&1 && MYARCH="${MYARCH}_64" - #echo NDK $NDK GCCPREFIX=arm-linux-androideabi [ -z "$NDK_TOOLCHAIN_VERSION" ] && NDK_TOOLCHAIN_VERSION=4.9 diff --git a/project/jni/application/setEnvironment-mips.sh b/project/jni/application/setEnvironment-mips.sh index 287d82d14..27d85e13e 100755 --- a/project/jni/application/setEnvironment-mips.sh +++ b/project/jni/application/setEnvironment-mips.sh @@ -18,8 +18,6 @@ NDK=`which ndk-build` NDK=`dirname $NDK` NDK=`readlink -f $NDK` -grep "64.bit" "$NDK/RELEASE.TXT" >/dev/null 2>&1 && MYARCH="${MYARCH}_64" - #echo NDK $NDK GCCPREFIX=mipsel-linux-android [ -z "$NDK_TOOLCHAIN_VERSION" ] && NDK_TOOLCHAIN_VERSION=4.9 diff --git a/project/jni/application/setEnvironment-x86.sh b/project/jni/application/setEnvironment-x86.sh index e6862409c..f9a9fa91e 100755 --- a/project/jni/application/setEnvironment-x86.sh +++ b/project/jni/application/setEnvironment-x86.sh @@ -18,8 +18,6 @@ NDK=`which ndk-build` NDK=`dirname $NDK` NDK=`readlink -f $NDK` -grep "64.bit" "$NDK/RELEASE.TXT" >/dev/null 2>&1 && MYARCH="${MYARCH}_64" - #echo NDK $NDK GCCPREFIX=i686-linux-android [ -z "$NDK_TOOLCHAIN_VERSION" ] && NDK_TOOLCHAIN_VERSION=4.9 diff --git a/project/jni/application/setEnvironment.sh b/project/jni/application/setEnvironment.sh index f4976d1ee..8b51f02c5 100755 --- a/project/jni/application/setEnvironment.sh +++ b/project/jni/application/setEnvironment.sh @@ -18,8 +18,6 @@ NDK=`which ndk-build` NDK=`dirname $NDK` NDK=`readlink -f $NDK` -grep "64.bit" "$NDK/RELEASE.TXT" >/dev/null 2>&1 && MYARCH="${MYARCH}_64" - #echo NDK $NDK GCCPREFIX=arm-linux-androideabi [ -z "$NDK_TOOLCHAIN_VERSION" ] && NDK_TOOLCHAIN_VERSION=4.9 diff --git a/project/jni/glshim/src/gl/gl.c b/project/jni/glshim/src/gl/gl.c index 59297bb27..5bad5838f 100755 --- a/project/jni/glshim/src/gl/gl.c +++ b/project/jni/glshim/src/gl/gl.c @@ -700,7 +700,7 @@ void glshim_glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid list = glstate.list.active; normalize_indices(sindices, &max, &min, count); - list = arrays_to_renderlist(list, mode, 0, max + 1 - min); + list = arrays_to_renderlist(list, mode, min, max + 1); list->indices = sindices; list->ilen = count; list->indice_cap = count; @@ -715,7 +715,7 @@ void glshim_glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid GLsizei min, max; normalize_indices(sindices, &max, &min, count); - list = arrays_to_renderlist(list, mode, 0, max + 1 - min); + list = arrays_to_renderlist(list, mode, min, max + 1); list->indices = sindices; list->ilen = count; list->indice_cap = count; diff --git a/project/jni/glshim/src/gl/pixel.c b/project/jni/glshim/src/gl/pixel.c index e1aca880e..c5fb82251 100755 --- a/project/jni/glshim/src/gl/pixel.c +++ b/project/jni/glshim/src/gl/pixel.c @@ -755,7 +755,7 @@ bool pixel_convert(const GLvoid *src, GLvoid **dst, } return true; } - if ((src_format == GL_BGR) && (dst_format == GL_RGB) && (dst_type = GL_UNSIGNED_SHORT_5_6_5) && ((src_type == GL_UNSIGNED_BYTE)||(src_type == GL_UNSIGNED_INT_8_8_8_8_REV))) { + if (((src_format == GL_BGR) || (src_format == GL_BGRA)) && (dst_format == GL_RGB) && (dst_type = GL_UNSIGNED_SHORT_5_6_5) && ((src_type == GL_UNSIGNED_BYTE)||(src_type == GL_UNSIGNED_INT_8_8_8_8_REV))) { GLuint tmp; for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { diff --git a/project/jni/iconv/lib/armeabi-v7a/libiconv.so b/project/jni/iconv/lib/armeabi-v7a/libiconv.so index df977f723..28adb01bc 100644 Binary files a/project/jni/iconv/lib/armeabi-v7a/libiconv.so and b/project/jni/iconv/lib/armeabi-v7a/libiconv.so differ diff --git a/project/jni/iconv/lib/armeabi/libiconv.so b/project/jni/iconv/lib/armeabi/libiconv.so index 17821691d..038aeca55 100644 Binary files a/project/jni/iconv/lib/armeabi/libiconv.so and b/project/jni/iconv/lib/armeabi/libiconv.so differ diff --git a/project/jni/iconv/lib/mips/libiconv.so b/project/jni/iconv/lib/mips/libiconv.so index 98e23beb4..6cd9bea05 100644 Binary files a/project/jni/iconv/lib/mips/libiconv.so and b/project/jni/iconv/lib/mips/libiconv.so differ diff --git a/project/jni/iconv/lib/x86/libiconv.so b/project/jni/iconv/lib/x86/libiconv.so index 09cfd0c92..34e1d1a76 100644 Binary files a/project/jni/iconv/lib/x86/libiconv.so and b/project/jni/iconv/lib/x86/libiconv.so differ diff --git a/project/jni/sdl_main/sdl_main.c b/project/jni/sdl_main/sdl_main.c index 66619aabb..310e62ef5 100644 --- a/project/jni/sdl_main/sdl_main.c +++ b/project/jni/sdl_main/sdl_main.c @@ -129,6 +129,12 @@ JAVA_EXPORT_NAME(DemoRenderer_nativeInit) ( JNIEnv* env, jobject thiz, jstring } } + for (i = 0; i < argc; i++) + { + while( strchr(argv[i], '\t') != NULL ) + strchr(argv[i], '\t')[0] = ' '; + } + __android_log_print(ANDROID_LOG_INFO, "libSDL", "Calling SDL_main(\"%s\")", str); (*env)->ReleaseStringUTFChars(env, cmdline, jstr);