From 17ea07d39df4ad0b2880080462bd065f6b8e20ae Mon Sep 17 00:00:00 2001 From: pelya Date: Mon, 17 Sep 2012 15:44:56 +0300 Subject: [PATCH] Changed accelerometer/multitouch/joystick input once again, removed touch event ratelimiting for Froyo and newer. --- ChangeAppSettings.sh | 24 ++-- project/java/Accelerometer.java | 6 +- project/java/Globals.java | 2 +- project/java/MainActivity.java | 2 +- project/java/Settings.java | 19 +-- project/java/Video.java | 27 +++- .../ballfield/AndroidAppSettings.cfg | 8 +- .../{ballfield2.zip => ballfield3.zip} | Bin 937102 -> 944020 bytes .../jni/application/ballfield/ballfield.cpp | 135 ++++++++++-------- .../commandergenius/commandergenius | 2 +- .../AndroidAppSettings.cfg | 4 +- .../test-advertisements/ballfield.cpp | 4 +- .../testmultitouch/AndroidAppSettings.cfg | 44 ------ .../testmultitouch/AndroidData/ballfield2.zip | Bin 2402 -> 0 bytes .../application/testmultitouch/example.cpp | 74 ---------- .../jni/application/testmultitouch/icon.png | Bin 2130 -> 0 bytes .../src/video/android/SDL_androidinput.c | 66 ++++----- readme.txt | 2 + 18 files changed, 154 insertions(+), 265 deletions(-) rename project/jni/application/ballfield/AndroidData/{ballfield2.zip => ballfield3.zip} (99%) delete mode 100644 project/jni/application/testmultitouch/AndroidAppSettings.cfg delete mode 100644 project/jni/application/testmultitouch/AndroidData/ballfield2.zip delete mode 100644 project/jni/application/testmultitouch/example.cpp delete mode 100644 project/jni/application/testmultitouch/icon.png diff --git a/ChangeAppSettings.sh b/ChangeAppSettings.sh index b9e62ce93..641078031 100755 --- a/ChangeAppSettings.sh +++ b/ChangeAppSettings.sh @@ -277,9 +277,8 @@ fi if [ -z "$AppUsesJoystick" -o -z "$AUTO" ]; then echo -echo "Application uses joystick (y) or (n), the accelerometer (2-axis) or orientation sensor (3-axis)" -echo "will be used as joystick 0, also on-screen DPAD will be used as joystick -" -echo -n "make sure you can navigate all app menus with joystick or mouse ($AppUsesJoystick): " +echo "Application uses joystick (y) or (n), the on-screen DPAD will be used" +echo -n " as joystick 0 axes 0-1, you will also need to set AppNeedsArrowKeys=y ($AppUsesJoystick): " read var if [ -n "$var" ] ; then AppUsesJoystick="$var" @@ -287,13 +286,12 @@ if [ -n "$var" ] ; then fi fi -if [ -z "$AppHandlesJoystickSensitivity" -o -z "$AUTO" ]; then +if [ -z "$AppUsesAccelerometer" -o -z "$AUTO" ]; then echo -echo "Application will handle joystick center and sensitivity itself, " -echo -n "SDL will send raw accelerometer data and won't show 'Accelerometer sensitivity' dialog (y) or (n) ($AppHandlesJoystickSensitivity): " +echo -n "Application uses accelerometer (y) or (n), the accelerometer will be used as joystick 0 axes 2-3 ($AppUsesAccelerometer): " read var if [ -n "$var" ] ; then - AppHandlesJoystickSensitivity="$var" + AppUsesAccelerometer="$var" CHANGED=1 fi fi @@ -301,7 +299,7 @@ fi if [ -z "$AppUsesMultitouch" -o -z "$AUTO" ]; then echo echo "Application uses multitouch (y) or (n), multitouch events are passed as SDL_JOYBUTTONDOWN/SDL_JOYBALLMOTION events" -echo -n " for the first joystick, or additionally as SDL_FINGERDOWN/UP/MOTION events in SDL 1.3 ($AppUsesMultitouch): " +echo -n " for the joystick 0, or additionally as SDL_FINGERDOWN/UP/MOTION events in SDL 1.3 ($AppUsesMultitouch): " read var if [ -n "$var" ] ; then AppUsesMultitouch="$var" @@ -635,7 +633,7 @@ echo ForceRelativeMouseMode=$ForceRelativeMouseMode >> AndroidAppSettings.cfg echo AppNeedsArrowKeys=$AppNeedsArrowKeys >> AndroidAppSettings.cfg echo AppNeedsTextInput=$AppNeedsTextInput >> AndroidAppSettings.cfg echo AppUsesJoystick=$AppUsesJoystick >> AndroidAppSettings.cfg -echo AppHandlesJoystickSensitivity=$AppHandlesJoystickSensitivity >> AndroidAppSettings.cfg +echo AppUsesAccelerometer=$AppUsesAccelerometer >> AndroidAppSettings.cfg echo AppUsesMultitouch=$AppUsesMultitouch >> AndroidAppSettings.cfg echo NonBlockingSwapBuffers=$NonBlockingSwapBuffers >> AndroidAppSettings.cfg echo RedefinedKeys=\"$RedefinedKeys\" >> AndroidAppSettings.cfg @@ -784,10 +782,10 @@ else AppUsesJoystick=false fi -if [ "$AppHandlesJoystickSensitivity" = "y" ] ; then - AppHandlesJoystickSensitivity=true +if [ "$AppUsesAccelerometer" = "y" ] ; then + AppUsesAccelerometer=true else - AppHandlesJoystickSensitivity=false + AppUsesAccelerometer=false fi if [ "$AppUsesMultitouch" = "y" ] ; then @@ -921,7 +919,7 @@ cat project/src/Globals.java | \ sed "s/public static boolean AppNeedsArrowKeys = .*;/public static boolean AppNeedsArrowKeys = $AppNeedsArrowKeys;/" | \ sed "s/public static boolean AppNeedsTextInput = .*;/public static boolean AppNeedsTextInput = $AppNeedsTextInput;/" | \ sed "s/public static boolean AppUsesJoystick = .*;/public static boolean AppUsesJoystick = $AppUsesJoystick;/" | \ - sed "s/public static boolean AppHandlesJoystickSensitivity = .*;/public static boolean AppHandlesJoystickSensitivity = $AppHandlesJoystickSensitivity;/" | \ + sed "s/public static boolean AppUsesAccelerometer = .*;/public static boolean AppUsesAccelerometer = $AppUsesAccelerometer;/" | \ sed "s/public static boolean AppUsesMultitouch = .*;/public static boolean AppUsesMultitouch = $AppUsesMultitouch;/" | \ sed "s/public static boolean NonBlockingSwapBuffers = .*;/public static boolean NonBlockingSwapBuffers = $NonBlockingSwapBuffers;/" | \ sed "s/public static boolean ResetSdlConfigForThisVersion = .*;/public static boolean ResetSdlConfigForThisVersion = $ResetSdlConfigForThisVersion;/" | \ diff --git a/project/java/Accelerometer.java b/project/java/Accelerometer.java index 54e87065c..f930661a9 100644 --- a/project/java/Accelerometer.java +++ b/project/java/Accelerometer.java @@ -44,7 +44,6 @@ class AccelerometerReader implements SensorEventListener public AccelerometerReader(Activity context) { - System.out.println("libSDL: accelerometer start required: " + String.valueOf(Globals.UseAccelerometerAsArrowKeys)); _manager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE); start(); } @@ -53,14 +52,13 @@ class AccelerometerReader implements SensorEventListener { if( _manager != null ) { - System.out.println("libSDL: stopping accelerometer"); _manager.unregisterListener(this); } } public synchronized void start() { - if( Globals.UseAccelerometerAsArrowKeys ) + if( Globals.UseAccelerometerAsArrowKeys || Globals.AppUsesAccelerometer ) { if( _manager != null ) { @@ -97,5 +95,3 @@ class AccelerometerReader implements SensorEventListener private native void nativeAccelerometer(float accX, float accY, float accZ); private native void nativeOrientation(float accX, float accY, float accZ); } - - diff --git a/project/java/Globals.java b/project/java/Globals.java index 904270a8c..64126761e 100644 --- a/project/java/Globals.java +++ b/project/java/Globals.java @@ -52,7 +52,7 @@ class Globals public static boolean AppNeedsArrowKeys = true; public static boolean AppNeedsTextInput = true; public static boolean AppUsesJoystick = false; - public static boolean AppHandlesJoystickSensitivity = false; + public static boolean AppUsesAccelerometer = false; public static boolean AppUsesMultitouch = false; public static boolean NonBlockingSwapBuffers = false; public static boolean ResetSdlConfigForThisVersion = false; diff --git a/project/java/MainActivity.java b/project/java/MainActivity.java index fe23ed9f4..e12878fa8 100644 --- a/project/java/MainActivity.java +++ b/project/java/MainActivity.java @@ -240,7 +240,7 @@ public class MainActivity extends Activity return; System.out.println("libSDL: Initializing video and SDL application"); sdlInited = true; - if(Globals.UseAccelerometerAsArrowKeys) + if(Globals.UseAccelerometerAsArrowKeys || Globals.AppUsesAccelerometer) getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); _videoLayout.removeView(_layout); diff --git a/project/java/Settings.java b/project/java/Settings.java index 8fc7b2b6e..6e915b9b5 100644 --- a/project/java/Settings.java +++ b/project/java/Settings.java @@ -845,17 +845,10 @@ class Settings } boolean enabled() { - return Globals.UseAccelerometerAsArrowKeys || ! Globals.AppHandlesJoystickSensitivity; + return Globals.UseAccelerometerAsArrowKeys; } void run (final MainActivity p) { - if( ! Globals.UseAccelerometerAsArrowKeys || Globals.AppHandlesJoystickSensitivity ) - { - Globals.AccelerometerSensitivity = 2; // Slow, full range - showAccelerometerCenterConfig(p); - return; - } - final CharSequence[] items = { p.getResources().getString(R.string.accel_fast), p.getResources().getString(R.string.accel_medium), p.getResources().getString(R.string.accel_slow) }; @@ -885,13 +878,6 @@ class Settings } static void showAccelerometerCenterConfig(final MainActivity p) { - if( ! Globals.UseAccelerometerAsArrowKeys || Globals.AppHandlesJoystickSensitivity ) - { - Globals.AccelerometerCenterPos = 2; // Fixed horizontal center position - goBack(p); - return; - } - final CharSequence[] items = { p.getResources().getString(R.string.accel_floating), p.getResources().getString(R.string.accel_fixed_start), p.getResources().getString(R.string.accel_fixed_horiz) }; @@ -2436,6 +2422,8 @@ class Settings Globals.ShowMouseCursor ? 1 : 0 ); if( Globals.AppUsesJoystick && (Globals.UseAccelerometerAsArrowKeys || Globals.UseTouchscreenKeyboard) ) nativeSetJoystickUsed(); + if( Globals.AppUsesAccelerometer ) + nativeSetAccelerometerUsed(); if( Globals.AppUsesMultitouch ) nativeSetMultitouchUsed(); nativeSetAccelerometerSettings(Globals.AccelerometerSensitivity, Globals.AccelerometerCenterPos); @@ -2592,6 +2580,7 @@ class Settings int relativeMovement, int relativeMovementSpeed, int relativeMovementAccel, int showMouseCursor); private static native void nativeSetJoystickUsed(); + private static native void nativeSetAccelerometerUsed(); private static native void nativeSetMultitouchUsed(); private static native void nativeSetTouchscreenKeyboardUsed(); private static native void nativeSetSmoothVideo(); diff --git a/project/java/Video.java b/project/java/Video.java index 8212baeeb..fba98506d 100644 --- a/project/java/Video.java +++ b/project/java/Video.java @@ -502,9 +502,12 @@ class DemoRenderer extends GLSurfaceView_SDL.Renderer { if( ! super.SwapBuffers() && Globals.NonBlockingSwapBuffers ) { - synchronized(this) + if(mRatelimitTouchEvents) { - this.notify(); + synchronized(this) + { + this.notify(); + } } return 0; } @@ -517,9 +520,12 @@ class DemoRenderer extends GLSurfaceView_SDL.Renderer } // Unblock event processing thread only after we've finished rendering - synchronized(this) + if(mRatelimitTouchEvents) { - this.notify(); + synchronized(this) + { + this.notify(); + } } return 1; } @@ -662,10 +668,11 @@ class DemoRenderer extends GLSurfaceView_SDL.Renderer private boolean mGlContextLost = false; public boolean mGlSurfaceCreated = false; public boolean mPaused = false; - //public boolean mPutToBackground = false; private boolean mFirstTimeStart = true; public int mWidth = 0; public int mHeight = 0; + + public static final boolean mRatelimitTouchEvents = (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO); } class DemoGLSurfaceView extends GLSurfaceView_SDL { @@ -682,7 +689,10 @@ class DemoGLSurfaceView extends GLSurfaceView_SDL { public boolean onTouchEvent(final MotionEvent event) { touchInput.process(event); - limitEventRate(event); + if( DemoRenderer.mRatelimitTouchEvents ) + { + limitEventRate(event); + } return true; }; @@ -690,7 +700,10 @@ class DemoGLSurfaceView extends GLSurfaceView_SDL { public boolean onGenericMotionEvent (final MotionEvent event) { touchInput.processGenericEvent(event); - limitEventRate(event); + if( DemoRenderer.mRatelimitTouchEvents ) + { + limitEventRate(event); + } return true; } diff --git a/project/jni/application/ballfield/AndroidAppSettings.cfg b/project/jni/application/ballfield/AndroidAppSettings.cfg index b5f26d345..037908efd 100644 --- a/project/jni/application/ballfield/AndroidAppSettings.cfg +++ b/project/jni/application/ballfield/AndroidAppSettings.cfg @@ -5,7 +5,7 @@ AppName="Ballfield" AppFullName=net.olofson.ballfield ScreenOrientation=h InhibitSuspend=n -AppDataDownloadUrl="Game data is 1 Mb|ballfield2.zip" +AppDataDownloadUrl="Game data is 1 Mb|ballfield3.zip" VideoDepthBpp=16 NeedDepthBuffer=n NeedStencilBuffer=n @@ -20,10 +20,10 @@ AppUsesMouse=y AppNeedsTwoButtonMouse=y ShowMouseCursor=n ForceRelativeMouseMode=n -AppNeedsArrowKeys=n +AppNeedsArrowKeys=y AppNeedsTextInput=y -AppUsesJoystick=n -AppHandlesJoystickSensitivity=n +AppUsesJoystick=y +AppUsesAccelerometer=y AppUsesMultitouch=y NonBlockingSwapBuffers=n RedefinedKeys="SPACE RETURN NO_REMAP NO_REMAP SPACE ESCAPE" diff --git a/project/jni/application/ballfield/AndroidData/ballfield2.zip b/project/jni/application/ballfield/AndroidData/ballfield3.zip similarity index 99% rename from project/jni/application/ballfield/AndroidData/ballfield2.zip rename to project/jni/application/ballfield/AndroidData/ballfield3.zip index 655e4ce197b3a496240dc9e79b2a15108fb70169..463c70ee8e6075f5051ea8bf1d4de35834638a45 100644 GIT binary patch delta 6923 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 VrV<#q8Mqm0m>C$DQur7c7y!Oyr&Is{ delta 63 zcmbPo-m-6|WkU;N3sVbo3rh=Y3tJ0&3r7oQ3s(zw3r`F07Ct+#?JOyLHcZnS()rl< S*csRvY?v4rY`pjw7#IL_P!GWX diff --git a/project/jni/application/ballfield/ballfield.cpp b/project/jni/application/ballfield/ballfield.cpp index cac0f0376..6097a0daf 100644 --- a/project/jni/application/ballfield/ballfield.cpp +++ b/project/jni/application/ballfield/ballfield.cpp @@ -22,8 +22,8 @@ Definitions... ----------------------------------------------------------*/ -#define SCREEN_W 320 -#define SCREEN_H 200 +#define SCREEN_W 640 +#define SCREEN_H 480 #define BALLS 300 @@ -430,6 +430,13 @@ int main(int argc, char* argv[]) int fps_count = 0; int fps_start = 0; float x_speed, y_speed, z_speed; + enum { MAX_POINTERS = 16 }; + // some random colors + int colors[MAX_POINTERS] = { 0xaaaaaa, 0xffffff, 0x888888, 0xcccccc, 0x666666, 0x999999, 0xdddddd, 0xeeeeee, 0xaaaaaa, 0xffffff, 0x888888, 0xcccccc, 0x666666, 0x999999, 0xdddddd, 0xeeeeee }; + struct TouchPointer_t { int x; int y; int pressure; int pressed; } touchPointers[MAX_POINTERS]; + int accel[2], screenjoy[2]; + SDL_Surface *mouse[4]; + SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_JOYSTICK); @@ -516,15 +523,27 @@ int main(int argc, char* argv[]) font_hex = SDL_DisplayFormat(temp_image); SDL_FreeSurface(temp_image); + for(i = 0; i < 4; i++) + { + char name[32]; + sprintf(name, "mouse%d.png", i); + temp_image = IMG_Load(name); + if(!temp_image) + { + fprintf(stderr, "Could not load %s!\n", name); + exit(-1); + } + //mouse[i] = SDL_DisplayFormat(temp_image); + //SDL_FreeSurface(temp_image); + mouse[i] = temp_image; // Keep alpha + } + last_avg_tick = last_tick = SDL_GetTicks(); - enum { MAX_POINTERS = 16, PTR_PRESSED = 4 }; - int touchPointers[MAX_POINTERS][5]; - memset(touchPointers, 0, sizeof(touchPointers)); - SDL_Joystick * joysticks[MAX_POINTERS+1]; - for(i=0; iw; + r.h = mouse[cursorIdx]->h; r.x -= r.w/2; r.y -= r.h/2; - SDL_FillRect(screen, &r, color); + SDL_BlitSurface(mouse[cursorIdx], NULL, screen, &r); SDL_Flip(SDL_GetVideoSurface()); SDL_Event evt; @@ -615,41 +644,29 @@ int main(int argc, char* argv[]) __android_log_print(ANDROID_LOG_INFO, "Ballfield", "SDL resize event: %d x %d", evt.resize.w, evt.resize.h); if(evt.type == SDL_ACTIVEEVENT) __android_log_print(ANDROID_LOG_INFO, "Ballfield", "======= SDL active event: gain %d state %d", evt.active.gain, evt.active.state); - /* - if( evt.type == SDL_ACTIVEEVENT && evt.active.gain == 0 && evt.active.state & SDL_APPACTIVE ) - { - // We've lost GL context, we are not allowed to do any GFX output here, or app will crash! - while( 1 ) - { - SDL_PollEvent(&evt); - if( evt.type == SDL_ACTIVEEVENT && evt.active.gain && evt.active.state & SDL_APPACTIVE ) - { - __android_log_print(ANDROID_LOG_INFO, "Ballfield", "======= SDL active event: gain %d state %d", evt.active.gain, evt.active.state); - SDL_Flip(SDL_GetVideoSurface()); // One SDL_Flip() call is required here to restore OpenGL context - // Re-load all textures, matrixes and all other GL states if we're in SDL+OpenGL mode - // Re-load all images to SDL_Texture if we're using it - // Now we can draw - break; - } - // Process network stuff, maybe play some sounds using SDL_ANDROID_PauseAudioPlayback() / SDL_ANDROID_ResumeAudioPlayback() - SDL_Delay(300); - __android_log_print(ANDROID_LOG_INFO, "Ballfield", "Waiting"); - } - } - */ + // Android-specific events - accelerometer, multitoush, and on-screen joystick if( evt.type == SDL_JOYAXISMOTION ) { - if( evt.jaxis.which == 0 ) // 0 = The accelerometer - continue; - int joyid = evt.jaxis.which - 1; - touchPointers[joyid][evt.jaxis.axis] = evt.jaxis.value; // Axis 0 and 1 are coordinates, 2 and 3 are pressure and touch point radius + if(evt.jaxis.axis < 4) + { + if(evt.jaxis.axis < 2) + screenjoy[evt.jaxis.axis] = evt.jaxis.value; + else + accel[evt.jaxis.axis - 2] = evt.jaxis.value; + } + else + { + touchPointers[evt.jaxis.axis - 4].pressure = evt.jaxis.value; + } } if( evt.type == SDL_JOYBUTTONDOWN || evt.type == SDL_JOYBUTTONUP ) { - if( evt.jbutton.which == 0 ) // 0 = The accelerometer - continue; - int joyid = evt.jbutton.which - 1; - touchPointers[joyid][PTR_PRESSED] = (evt.jbutton.state == SDL_PRESSED); + touchPointers[evt.jbutton.button].pressed = (evt.jbutton.state == SDL_PRESSED); + } + if( evt.type == SDL_JOYBALLMOTION ) + { + touchPointers[evt.jball.ball].x = evt.jball.xrel; + touchPointers[evt.jball.ball].y = evt.jball.yrel; } } diff --git a/project/jni/application/commandergenius/commandergenius b/project/jni/application/commandergenius/commandergenius index 023025901..d1b8a7ae0 160000 --- a/project/jni/application/commandergenius/commandergenius +++ b/project/jni/application/commandergenius/commandergenius @@ -1 +1 @@ -Subproject commit 023025901a1d96a46d826791bf9cf264ddf5c9ee +Subproject commit d1b8a7ae03b1a0960722abbab38bbb8fca98e7cd diff --git a/project/jni/application/test-advertisements/AndroidAppSettings.cfg b/project/jni/application/test-advertisements/AndroidAppSettings.cfg index accbfdadb..3922aeeff 100644 --- a/project/jni/application/test-advertisements/AndroidAppSettings.cfg +++ b/project/jni/application/test-advertisements/AndroidAppSettings.cfg @@ -3,8 +3,8 @@ AppSettingVersion=17 LibSdlVersion=1.2 AppName="Admob test" AppFullName=ws.openarena.sdl -ScreenOrientation=h -InhibitSuspend=n +ScreenOrientation=v +InhibitSuspend=y AppDataDownloadUrl="Game data is 1 Mb|ballfield2.zip" VideoDepthBpp=16 NeedDepthBuffer=n diff --git a/project/jni/application/test-advertisements/ballfield.cpp b/project/jni/application/test-advertisements/ballfield.cpp index 578bd5a68..9c3b974ac 100644 --- a/project/jni/application/test-advertisements/ballfield.cpp +++ b/project/jni/application/test-advertisements/ballfield.cpp @@ -23,8 +23,8 @@ Definitions... ----------------------------------------------------------*/ -#define SCREEN_W 320 -#define SCREEN_H 200 +#define SCREEN_W 480 +#define SCREEN_H 800 #define BALLS 300 diff --git a/project/jni/application/testmultitouch/AndroidAppSettings.cfg b/project/jni/application/testmultitouch/AndroidAppSettings.cfg deleted file mode 100644 index 926a26ee8..000000000 --- a/project/jni/application/testmultitouch/AndroidAppSettings.cfg +++ /dev/null @@ -1,44 +0,0 @@ -# The application settings for Android libSDL port -AppSettingVersion=17 -LibSdlVersion=1.2 -AppName="Example multitouch" -AppFullName=org.libsdl.example.multitouch -ScreenOrientation=h -InhibitSuspend=n -AppDataDownloadUrl="Game data is 1 Mb|ballfield2.zip" -VideoDepthBpp=16 -NeedDepthBuffer=n -NeedStencilBuffer=n -NeedGles2=n -SwVideoMode=y -SdlVideoResize=y -SdlVideoResizeKeepAspect=n -CompatibilityHacks=n -AppUsesMouse=y -AppNeedsTwoButtonMouse=y -ShowMouseCursor=n -ForceRelativeMouseMode=n -AppNeedsArrowKeys=n -AppNeedsTextInput=y -AppUsesJoystick=y -AppHandlesJoystickSensitivity=n -AppUsesMultitouch=y -NonBlockingSwapBuffers=n -RedefinedKeys="SPACE RETURN NO_REMAP NO_REMAP SPACE ESCAPE" -AppTouchscreenKeyboardKeysAmount=0 -AppTouchscreenKeyboardKeysAmountAutoFire=0 -RedefinedKeysScreenKb="1 2 3 4 5 6 1 2 3 4" -StartupMenuButtonTimeout=0 -HiddenMenuOptions='OptionalDownloadConfig' -FirstStartMenuOptions='' -MultiABI=n -AppVersionCode=101 -AppVersionName="1.01" -ResetSdlConfigForThisVersion=n -CompiledLibraries="sdl_mixer sdl_image" -CustomBuildScript=n -AppCflags='-O2 -finline-functions' -AppLdflags='' -AppSubdirsBuild='' -AppCmdline='' -ReadmeText='^Readme text' diff --git a/project/jni/application/testmultitouch/AndroidData/ballfield2.zip b/project/jni/application/testmultitouch/AndroidData/ballfield2.zip deleted file mode 100644 index 7a9b8595a444e8ac2bfda92bd2b2432beffde016..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2402 zcmWIWW@Zs#U|`^2IN4#WW5}1C!pqFSz{kbFz{4QJkd~iUVqRfrpqG?e5E{bCz?{|X zX|v(*IiJ!BZU#n{7t9O{VB%?5w7+nmz`VQLx?`nRX>4iD+g+Oxm9<*UL3@!PXA6U( zfU9ztX9$y9(vd4OW=J$WJn5e7v1fr=oKw@U6orpR??0^n;NDaGE$4ikMReu%nZD=F z{oMC6E$#W7l9XMs?61R@F84SuV|!+)!=+FE`yF-AQap zlP2h&pIUd|xn>Ms&&h)|dyZQ#D7bR+zK{Evc^h81sV;vMX0La!hO=OEQ~825w@*Ce z%KdtA+V2Y+Cvk3z6ny%=+{i|7`>%UfmDYSyP3L(N%d~z|Yk+vk!gH&>tup3Uj2HP3 z`hI$+f&Koz%TsN*cU$+~PA}9w&A+BZ=u{=|_hlJTuhbqi>q#w~lsEtT!C=8Vvlsl^ zZGFa9VX0sBfe!DJ(ed-+PP6td-OjMY_1NwwVc%n2eCEF3{e7AH$tg?La<`BBL@&QB zSvgs(-)w3_kkN*36ZbU9vwaZMd3LksVyN5nopWvO@~k`U*u}HR`uSXxsj&{Z$#P-NuvGJSv%TZ_D=CI2w zvvLLaD|h@U5-?VF-L_!2@)5rFGh43B4&^?suy}LPiZV^xtCFWA1)Vn83t36zew$!% zLZd?}diC~g`w>~{P(Y;Ct7Mnkh0F{LW}Ki*Cc}`EpPmoTPH*X%4?Owi#0?!{DIRkHAUhtM}}#Nfz02gX?@F_pUbEgSFT8NdGc9 z`_}MYZLz^ar;XW}_jYdiSQD&%@cr+f-cS22_dj)ZjCj7a{%Omj`HyR)gJmDcRET{w zu;9M7;ljf%ouoDFk+)aKu<1AGzdg9HLwc_BPT%XnCZ)Mf*Vk0Oo!_(Y$%=VP+|QRd zCkLhoXZb%D)tPHjQQZ?>vb$^UgQ%YMNu>gNrR4yxz1<+wkGH z*;bDQC;m0K$8`PCq>Pxd51caIyP8U`J2-Rj-9s_{v)yayv9AN zqo-%sE&6eNM@jzI$fIwy!VBYG{jZLBrN8TSk>+G6yJv^yaO)>)H93hWr_L9PajuQ{ z_>J31y#89z@5$e{3T!<$MJ1|a$>jE>`K=0EHx=Gr|1mR4l1aKyv&dxe4$~w28)`)M ztg^k_%=Uin!(A7}uUXaZR47lc{Hj=y-}XA|kelPT)lZ)Om8{Ftne(Nfd={^1=Hiq^ z>MaZHlt(oz zFHie3mY)hmnE`$ zb5uZ4YZXiAo884+TY|Lbx+Les7e9Yeu`56LzYNzm*5^&@5+;}Z{k8On{9W$DlY`G` zPwUOzS9>7J-BADC*R)>?XRT;IwJ|I|!rA8d|HR*sr8Dz4-`iW08oM^|w(*qH-%@ud z{GAe`&HuIgn9{v(CJy&ffBbdYe`{V;@sbaJ-0p?^GL-5&&vdjr>|V&MMb->|=S{9V zGiS5ZrtB`Jv)RmE`h1c0QfDf<2N~;{5drE#traKUY_Fzm>i# zzPkL1eDTHes~)c1{^I+&i`L9jZA6^!ef)Ig^U|s6lbb8tDm3nIPuf|*6yVLsB*%=a zT_M2$16vwFEYwy8E2Ncy7Ou!9Viv0i6PGjwGczC+vaAfuph6apX_zsNFs-4HjhzAB g3PQv`D+4o@xDW7VWdr$#nSq(%8v_GF7zc<40F0kBivR!s diff --git a/project/jni/application/testmultitouch/example.cpp b/project/jni/application/testmultitouch/example.cpp deleted file mode 100644 index 331947366..000000000 --- a/project/jni/application/testmultitouch/example.cpp +++ /dev/null @@ -1,74 +0,0 @@ -#include -#include "SDL.h" - - -int main(int argc, char* argv[]) -{ - SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_JOYSTICK); - SDL_Surface * screen = SDL_SetVideoMode(640, 480, 16, 0); - - enum { MAX_POINTERS = 16 }; - // some random colors - int colors[MAX_POINTERS] = { 0xaaaaaa, 0xffffff, 0x888888, 0xcccccc, 0x666666, 0x999999, 0xdddddd, 0xeeeeee, 0xaaaaaa, 0xffffff, 0x888888, 0xcccccc, 0x666666, 0x999999, 0xdddddd, 0xeeeeee }; - struct TouchPointer_t { int x; int y; int pressure; int pressed; } touchPointers[MAX_POINTERS]; - int accel[3]; // Only first 2 coords are used - int i; - - memset(touchPointers, 0, sizeof(touchPointers)); - memset(accel, 0, sizeof(accel)); - SDL_Joystick * joystick = SDL_JoystickOpen(0); - - while(1) - { - SDL_Event evt; - while( SDL_PollEvent(&evt) ) - { - if( evt.type == SDL_JOYAXISMOTION ) - { - if(evt.jaxis.axis < 3) - accel[evt.jaxis.axis] = evt.jaxis.value; // Those events are spammy, don't log them - else - { - __android_log_print(ANDROID_LOG_INFO, "Multitouch", "SDL_JOYAXISMOTION %d value %06d", (int)evt.jaxis.axis, (int)evt.jaxis.value ); - touchPointers[evt.jaxis.axis-3].pressure = evt.jaxis.value; - } - } - if( evt.type == SDL_JOYBUTTONDOWN || evt.type == SDL_JOYBUTTONUP ) - { - __android_log_print(ANDROID_LOG_INFO, "Multitouch", "SDL_JOYBUTTON %d value %d", (int)evt.jbutton.button, (int)evt.jbutton.state ); - touchPointers[evt.jbutton.button].pressed = (evt.jbutton.state == SDL_PRESSED); - } - if( evt.type == SDL_JOYBALLMOTION ) - { - __android_log_print(ANDROID_LOG_INFO, "Multitouch", "SDL_JOYBALLMOTION %d %06d:%06d", (int)evt.jball.ball, (int)evt.jball.xrel, (int)evt.jball.yrel ); - touchPointers[evt.jball.ball].x = evt.jball.xrel; - touchPointers[evt.jball.ball].y = evt.jball.yrel; - } - if(evt.type == SDL_KEYDOWN && evt.key.keysym.sym == SDLK_ESCAPE) - return 0; - } - SDL_FillRect(screen, 0, 0); - SDL_Rect r; - for(i=0; iBaocFh$)n(>nX=P4I zTD-+^jhBnmhowpKH5(JOyZE;y$cxN(xneFF@*ybGkwsLnCb0To(CV;^i_?O#CP(yM zQhPc5+3u&i=M+CX^JedK{>`6fvQ%GeOiVj>bMv+OwO`}^?{(XARC({?!?$m3D(C;w zcdF~PaB%db82+A=*QJZ%c% z7Ore=5iVyVp2dEgPKz>|wk|eIEIjhzW$N`i|KB}6|NrNIwhMB5zZdU-Px~~Z0!J6e*IJahZkha zXIX#AUH;AL`8Bnr$4*{@&%xwotI{XTVZKl?3=2_+A{B`3YFT^DipP0ZUT zN+QWGDrd}TvaNpD_BS9*;J84vj;iw0Dbgo=PC58YXDYbTQEHRC=i1ZXot zxAN!Z^&$-Ca`*YKIcLT8Zj;q?+Z$VD-|gl8wx8E;?!kTa^^4@(oGuHcCx9#B9_2;7b0p81cirCjO74Mw-rHr#x6f{qnHK%p`L7IpsM}(%e&6t`Hu2`0oW4bxBS&4Iz;|YdiH`pe$ z#H_6-%{HE|mvWT-LX~D#snX@VD^tS?-tqi-z<6VuwZZ>aQqRxL35}k=Va7Qo?+I#+ zZzaqVo}FFOGs*iwQ_n`rtObn6Zd!Sqd?Ed>xpm^Y<8G<#Ti-5Hb1b>gmzXOl%`3G0 z|2=`nTxWmGX?>=8wBXL7xxq!3(>_)mUdCfK(`53QD#s$-fMg!Q(tYopN>tVqt;*Bj z$@N|LHH~*gtH|!KZpJ58D|vb6axE1+7}ohV+wGV5y>k&6X^or-lA9YHg%wN_Of#k^ z%QKoPDe@?uJiRK{HROeL_8iTW8bQ_53PMX*9Aoz{zw?l@gLlf)dJ)yqQ`etuW@9^` zwSkQ%kS$5&z{A*uMTs z*9UtJDm`LKYDn&Ju22eiBp7PF?cvHtO|AF8F8#jc#v7AmVk->1jQ5o8p0&kr`;L@r z{+d%c)tJ+AkAEm)sB`_~eV{Ud@jO#fLwXOhmJ*-F2a#)wv!t&53()y`$X`wR|IAy5 zzHQW4X7I})bJ2+@g)t%#9uFoxk(vpr{Ksr&433QhI^)dxyG(| zFaFNQKcB_xYCbGm?zJVI>$XYv42LhCUp{FYz3x&t{6Zx=XT`a{d%GeS!vwrLOpi$Q z3C?q1oFeJcsqr#$e_ij?=W>6KFaFGWU{^Q)vXFbb(hAdDwU#w_+WhV1S;3qzZTTF( z+w2Dz44I}0W*@LhnxVYi$Kr#CW!1yr_`gr5m%g(uI2rJ3YIFPkmk%D-Zb_EfIVtal z<|fJZ3{RCK7T#eFYZBL_PnCZ1cmKgekt1`;0xu>DwQrY93!5HM|6;j%UFGvs1_rzO z56|4S-&_+izw7)-VsA`6|CY*g(#cyYMP$?DOgffH2XB-yoiek;*30X)VPJDy&4VN7 z`(nOC#&8|jpnpB&e(dqQHw)_+Xa0{hcL}-|*K0Oisk?k%71OCS>qnhjfio6oRZUqQ zf9;OA{@2QzA%CtMx^wezbop7w_j672mQC&QSZFw}&@cZ$@bha~nr1=sKCr~}-Aexz z#t;^G&30AzIfMU8z?cnEpK+5b6}d+ zp&T&5=%EmwyQgF0hmBi4IZd**n=bag`p1)G{@9oAdF{`>v#a>hKJQ;{F-h({&Vl<2lxK@e@;J&-uOHJ>CEIE8`o4FXJBAp@O1TaS?83{ F1OR)H{O|w( diff --git a/project/jni/sdl-1.3/src/video/android/SDL_androidinput.c b/project/jni/sdl-1.3/src/video/android/SDL_androidinput.c index 2fe799d23..a471bc241 100644 --- a/project/jni/sdl-1.3/src/video/android/SDL_androidinput.c +++ b/project/jni/sdl-1.3/src/video/android/SDL_androidinput.c @@ -80,6 +80,7 @@ static int moveMouseWithKbAccelUpdateNeeded = 0; static int maxForce = 0; static int maxRadius = 0; int SDL_ANDROID_isJoystickUsed = 0; +static int SDL_ANDROID_isAccelerometerUsed = 0; static int isMultitouchUsed = 0; SDL_Joystick *SDL_ANDROID_CurrentJoysticks[MAX_MULTITOUCH_POINTERS+1] = {NULL}; static int TrackballDampening = 0; // in milliseconds @@ -442,22 +443,10 @@ JAVA_EXPORT_NAME(DemoGLSurfaceView_nativeMotionEvent) ( JNIEnv* env, jobject t SDL_ANDROID_MainThreadPushMultitouchButton(pointerId, action == MOUSE_DOWN ? 1 : 0, x, y, force + radius); #endif - // The old, bad, deprecated, but still used multitouch API - /* - if( action == MOUSE_DOWN ) - SDL_ANDROID_MainThreadPushJoystickButton(pointerId+1, 0, SDL_PRESSED); - SDL_ANDROID_MainThreadPushJoystickAxis(pointerId+1, 0, x); - SDL_ANDROID_MainThreadPushJoystickAxis(pointerId+1, 1, y); - SDL_ANDROID_MainThreadPushJoystickAxis(pointerId+1, 2, force); - SDL_ANDROID_MainThreadPushJoystickAxis(pointerId+1, 3, radius); - if( action == MOUSE_UP ) - SDL_ANDROID_MainThreadPushJoystickButton(pointerId+1, 0, SDL_RELEASED); - */ - // The new, good, clean multitouch API, which is using only the first joystick, and sending both X and Y coords simultaneously in one event if( action == MOUSE_DOWN ) SDL_ANDROID_MainThreadPushJoystickButton(0, pointerId, SDL_PRESSED); SDL_ANDROID_MainThreadPushJoystickBall(0, pointerId, x, y); - SDL_ANDROID_MainThreadPushJoystickAxis(0, pointerId+3, force + radius); // Radius is more sensitive usually + SDL_ANDROID_MainThreadPushJoystickAxis(0, pointerId+4, force + radius); // Radius is more sensitive usually if( action == MOUSE_UP ) SDL_ANDROID_MainThreadPushJoystickButton(0, pointerId, SDL_RELEASED); } @@ -1048,6 +1037,12 @@ JAVA_EXPORT_NAME(Settings_nativeSetJoystickUsed) (JNIEnv* env, jobject thiz) SDL_ANDROID_isJoystickUsed = 1; } +JNIEXPORT void JNICALL +JAVA_EXPORT_NAME(Settings_nativeSetAccelerometerUsed) (JNIEnv* env, jobject thiz) +{ + SDL_ANDROID_isAccelerometerUsed = 1; +} + JNIEXPORT void JNICALL JAVA_EXPORT_NAME(Settings_nativeSetMultitouchUsed) ( JNIEnv* env, jobject thiz) { @@ -1087,7 +1082,18 @@ void updateOrientation ( float accX, float accY, float accZ ) static float midX = 0, midY = 0, midZ = 0; static int pressLeft = 0, pressRight = 0, pressUp = 0, pressDown = 0, pressR = 0, pressL = 0; + + //__android_log_print(ANDROID_LOG_INFO, "libSDL", "updateOrientation(): %f %f %f", accX, accY, accZ); + if( SDL_ANDROID_isAccelerometerUsed ) + { + //__android_log_print(ANDROID_LOG_INFO, "libSDL", "updateOrientation(): sending joystick event"); + SDL_ANDROID_MainThreadPushJoystickAxis(0, 2, (Sint16)(fminf(32767.0f, fmax(-32767.0f, (accX) * 32767.0f)))); + SDL_ANDROID_MainThreadPushJoystickAxis(0, 3, (Sint16)(fminf(32767.0f, fmax(-32767.0f, -(accY) * 32767.0f)))); + //SDL_ANDROID_MainThreadPushJoystickAxis(0, 2, (Sint16)(fminf(32767.0f, fmax(-32767.0f, -(accZ) * 32767.0f)))); + return; + } + if( accelerometerCenterPos == ACCELEROMETER_CENTER_FIXED_START ) { accelerometerCenterPos = ACCELEROMETER_CENTER_FIXED_HORIZ; @@ -1096,16 +1102,12 @@ void updateOrientation ( float accX, float accY, float accZ ) midZ = accZ; } - // midX = 0.0f; // Do not remember old value for phone tilt, it feels weird - - //__android_log_print(ANDROID_LOG_INFO, "libSDL", "updateOrientation(): %f %f %f", accX, accY, accZ); - - if( SDL_ANDROID_isJoystickUsed ) // TODO: mutex for that stuff? + if( SDL_ANDROID_isJoystickUsed ) { //__android_log_print(ANDROID_LOG_INFO, "libSDL", "updateOrientation(): sending joystick event"); SDL_ANDROID_MainThreadPushJoystickAxis(0, 0, (Sint16)(fminf(32767.0f, fmax(-32767.0f, (accX - midX) * joystickSensitivity)))); SDL_ANDROID_MainThreadPushJoystickAxis(0, 1, (Sint16)(fminf(32767.0f, fmax(-32767.0f, -(accY - midY) * joystickSensitivity)))); - SDL_ANDROID_MainThreadPushJoystickAxis(0, 2, (Sint16)(fminf(32767.0f, fmax(-32767.0f, -(accZ - midZ) * joystickSensitivity)))); + //SDL_ANDROID_MainThreadPushJoystickAxis(0, 2, (Sint16)(fminf(32767.0f, fmax(-32767.0f, -(accZ - midZ) * joystickSensitivity)))); if( accelerometerCenterPos == ACCELEROMETER_CENTER_FLOATING ) { @@ -1118,10 +1120,8 @@ void updateOrientation ( float accX, float accY, float accZ ) if( accZ > midZ + dz*2 ) midZ = accZ - dz*2; } - } - - if(SDL_ANDROID_isJoystickUsed) return; + } if( accX < midX - dx ) { @@ -1372,10 +1372,10 @@ void SDL_ANDROID_processAndroidTrackballDampening() int SDL_SYS_JoystickInit(void) { SDL_numjoysticks = 0; - if( SDL_ANDROID_isJoystickUsed ) + if( SDL_ANDROID_isJoystickUsed || isMultitouchUsed || SDL_ANDROID_isAccelerometerUsed ) SDL_numjoysticks = 1; - if( isMultitouchUsed ) - SDL_numjoysticks = MAX_MULTITOUCH_POINTERS+1; + //if( isMultitouchUsed ) + // SDL_numjoysticks = MAX_MULTITOUCH_POINTERS+1; return(SDL_numjoysticks); } @@ -1383,9 +1383,7 @@ int SDL_SYS_JoystickInit(void) /* Function to get the device-dependent name of a joystick */ const char *SDL_SYS_JoystickName(int index) { - if(index) - return("Android multitouch"); - return("Android accelerometer/orientation sensor"); + return("Android accelerometer/multitouch sensor"); } /* Function to open a joystick for use. @@ -1400,19 +1398,14 @@ int SDL_SYS_JoystickOpen(SDL_Joystick *joystick) joystick->nballs = 0; if( joystick->index == 0 ) { - joystick->naxes = 3; + joystick->naxes = 4; // Joystick plus accelerometer if(isMultitouchUsed) { - joystick->naxes = 3 + MAX_MULTITOUCH_POINTERS; // Accelerometer/orientation, plus touch pressure/size + joystick->naxes = 4 + MAX_MULTITOUCH_POINTERS; // Joystick plus accelerometer, plus touch pressure/size joystick->nbuttons = MAX_MULTITOUCH_POINTERS; joystick->nballs = MAX_MULTITOUCH_POINTERS; } } - else - { - joystick->naxes = 4; - joystick->nbuttons = 1; - } SDL_ANDROID_CurrentJoysticks[joystick->index] = joystick; return(0); } @@ -1438,8 +1431,7 @@ void SDL_SYS_JoystickClose(SDL_Joystick *joystick) void SDL_SYS_JoystickQuit(void) { int i; - for(i=0; i