diff --git a/alienblaster/AppSettings.cfg b/alienblaster/AppSettings.cfg index 6417603c5..f2058cc35 100644 --- a/alienblaster/AppSettings.cfg +++ b/alienblaster/AppSettings.cfg @@ -3,3 +3,5 @@ AppFullName=de.schwardtnet.alienblaster ScreenOrientation=v AppDataDownloadUrl="http://sites.google.com/site/xpelyax/Home/alienblaster110_data.zip?attredirects=0&d=1" DownloadToSdcard=n +SdlVideoResize=y +NeedDepthBuffer=n diff --git a/alienblaster/ChangeAppSettings.sh b/alienblaster/ChangeAppSettings.sh index 494fd221c..04fdc444c 100755 --- a/alienblaster/ChangeAppSettings.sh +++ b/alienblaster/ChangeAppSettings.sh @@ -33,12 +33,26 @@ if [ -n "$var" ] ; then DownloadToSdcard="$var" fi +echo -n "\nApplication window should be resized to fit into 480x320 screen ($SdlVideoResize): " +read var +if [ -n "$var" ] ; then + SdlVideoResize="$var" +fi + +echo -n "\nEnable OpenGL depth buffer (needed only for 3-d applications) ($NeedDepthBuffer): " +read var +if [ -n "$var" ] ; then + NeedDepthBuffer="$var" +fi + cat /dev/null > AppSettings.cfg echo AppName=\"$AppName\" >> AppSettings.cfg echo AppFullName=$AppFullName >> AppSettings.cfg echo ScreenOrientation=$ScreenOrientation >> AppSettings.cfg echo AppDataDownloadUrl=\"$AppDataDownloadUrl\" >> AppSettings.cfg echo DownloadToSdcard=$DownloadToSdcard >> AppSettings.cfg +echo SdlVideoResize=$SdlVideoResize >> AppSettings.cfg +echo NeedDepthBuffer=$NeedDepthBuffer >> AppSettings.cfg AppShortName=`echo $AppName | sed 's/ //g'` DataPath="/data/data/$AppFullName/files" @@ -54,6 +68,16 @@ if [ "$ScreenOrientation" = "h" ] ; then ScreenOrientation1=landscape fi AppDataDownloadUrl1="`echo $AppDataDownloadUrl | sed 's/[&]/%26/g'`" +if [ "$SdlVideoResize" = "y" ] ; then + SdlVideoResize=1 +else + SdlVideoResize=0 +fi +if [ "$NeedDepthBuffer" = "y" ] ; then + NeedDepthBuffer=true +else + NeedDepthBuffer=false +fi echo Patching project/AndroidManifest.xml cat project/AndroidManifest.xml | \ @@ -74,7 +98,8 @@ echo Patching project/src/Globals.java cat project/src/Globals.java | \ sed "s/public static String ApplicationName = .*;/public static String ApplicationName = \"$AppShortName\";/" | \ sed "s^public static String DataDownloadUrl = \".*\";^public static String DataDownloadUrl = \"$AppDataDownloadUrl1\";^" | \ - sed "s/public static boolean DownloadToSdcard = .*;/public static boolean DownloadToSdcard = $DownloadToSdcard1;/" > \ + sed "s/public static boolean DownloadToSdcard = .*;/public static boolean DownloadToSdcard = $DownloadToSdcard1;/" | \ + sed "s/public static boolean NeedDepthBuffer = .*;/public static boolean NeedDepthBuffer = $NeedDepthBuffer;/" > \ project/src/Globals.java.1 mv -f project/src/Globals.java.1 project/src/Globals.java @@ -84,7 +109,8 @@ echo Patching project/jni/Android.mk cat project/jni/Android.mk | \ sed "s/SDL_JAVA_PACKAGE_PATH := .*/SDL_JAVA_PACKAGE_PATH := $AppFullNameUnderscored/" | \ - sed "s^SDL_CURDIR_PATH := .*^SDL_CURDIR_PATH := $DataPath^" > \ + sed "s^SDL_CURDIR_PATH := .*^SDL_CURDIR_PATH := $DataPath^" | \ + sed "s^SDL_VIDEO_RENDER_RESIZE := .*^SDL_VIDEO_RENDER_RESIZE := $SdlVideoResize^" > \ project/jni/Android.mk.1 mv -f project/jni/Android.mk.1 project/jni/Android.mk @@ -94,9 +120,10 @@ cat project/res/values/strings.xml | \ project/res/values/strings.xml.1 mv -f project/res/values/strings.xml.1 project/res/values/strings.xml -# Force rebuild of C-Java bindings +# Force rebuild of C-Java bindings and updated settings touch project/jni/sdl_main/*.c touch project/jni/sdl/src/video/android/*.c +touch project/jni/sdl/src/video/*.c touch project/jni/sdl/src/audio/android/*.c rm -f project/libs/armeabi/libapplication.so project/libs/armeabi/libsdl.so project/libs/armeabi/libsdl_main.so diff --git a/alienblaster/project/jni/Android.mk b/alienblaster/project/jni/Android.mk index d0ec625a1..e9f58b4e3 100644 --- a/alienblaster/project/jni/Android.mk +++ b/alienblaster/project/jni/Android.mk @@ -19,4 +19,8 @@ SDL_CURDIR_PATH := /data/data/de.schwardtnet.alienblaster/files # TODO: create a libsdl config file for that option and for key mapping/on-screen keyboard SDL_TRACKBALL_KEYUP_DELAY := 1 +# If the application designed for higher screen resolution enable this to get the screen +# resized in HW-accelerated way, however it eats a tiny bit of CPU +SDL_VIDEO_RENDER_RESIZE := 1 + include $(call all-subdir-makefiles) diff --git a/alienblaster/project/jni/sdl/Android.mk b/alienblaster/project/jni/sdl/Android.mk index dfc56171c..cdd8a1fd0 100644 --- a/alienblaster/project/jni/sdl/Android.mk +++ b/alienblaster/project/jni/sdl/Android.mk @@ -12,6 +12,7 @@ LOCAL_CFLAGS := -I$(LOCAL_PATH)/include \ -DSDL_JAVA_PACKAGE_PATH=$(SDL_JAVA_PACKAGE_PATH) \ -DSDL_CURDIR_PATH=\"$(SDL_CURDIR_PATH)\" \ -DSDL_TRACKBALL_KEYUP_DELAY=$(SDL_TRACKBALL_KEYUP_DELAY) \ + -DSDL_VIDEO_RENDER_RESIZE=$(SDL_VIDEO_RENDER_RESIZE) SDL_SRCS := \ diff --git a/alienblaster/project/jni/sdl/include/SDL_config_android.h b/alienblaster/project/jni/sdl/include/SDL_config_android.h index eb74bf2b8..b00791c5c 100644 --- a/alienblaster/project/jni/sdl/include/SDL_config_android.h +++ b/alienblaster/project/jni/sdl/include/SDL_config_android.h @@ -34,7 +34,6 @@ #define SDL_VIDEO_DRIVER_ANDROID 1 #define SDL_VIDEO_OPENGL_ES 1 #define SDL_VIDEO_RENDER_OGL_ES 1 -#define SDL_VIDEO_RENDER_RESIZE 1 #define SDL_AUDIO_DRIVER_ANDROID 1 diff --git a/alienblaster/project/src/Globals.java b/alienblaster/project/src/Globals.java index f88ab2269..42692d55f 100644 --- a/alienblaster/project/src/Globals.java +++ b/alienblaster/project/src/Globals.java @@ -18,6 +18,9 @@ class Globals { // set this dir in jni/Android.mk in SDL_CURDIR_PATH // This string is autogenerated by ChangeAppSettings.sh, do not change spaces amount public static boolean DownloadToSdcard = false; + + // Set this value to true if you're planning to render 3D using OpenGL - it eats some GFX resources, so disabled for 2D + public static boolean NeedDepthBuffer = false; } class LoadLibrary { diff --git a/alienblaster/project/src/Video.java b/alienblaster/project/src/Video.java index 6a589985c..94615c88d 100644 --- a/alienblaster/project/src/Video.java +++ b/alienblaster/project/src/Video.java @@ -19,6 +19,7 @@ import android.view.Window; import android.view.WindowManager; import android.widget.TextView; +import java.lang.Thread; class DemoRenderer extends GLSurfaceView_SDL.Renderer { @@ -41,6 +42,9 @@ class DemoRenderer extends GLSurfaceView_SDL.Renderer { nativeInitJavaCallbacks(); + // Make main thread priority lower so audio thread won't get underrun + // Thread.currentThread().setPriority((Thread.currentThread().getPriority() + Thread.MIN_PRIORITY)/2); + System.loadLibrary("application"); System.loadLibrary("sdl_main"); @@ -76,6 +80,7 @@ class DemoGLSurfaceView extends GLSurfaceView_SDL { public DemoGLSurfaceView(Activity context) { super(context); mParent = context; + setEGLConfigChooser(Globals.NeedDepthBuffer); accelerometer = new AccelerometerReader(context); mRenderer = new DemoRenderer(context); setRenderer(mRenderer);