From ce2c3d3c47d25db23608e386f2f35025a2179529 Mon Sep 17 00:00:00 2001 From: pelya Date: Thu, 10 Feb 2011 11:51:23 +0000 Subject: [PATCH] Fixed bug with tap left click method, updated fheroes2 project --- .../fheroes2/AndroidAppSettings.cfg | 4 ++-- project/jni/application/src | 2 +- .../src/video/android/SDL_androidinput.c | 19 ++++++++++--------- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/project/jni/application/fheroes2/AndroidAppSettings.cfg b/project/jni/application/fheroes2/AndroidAppSettings.cfg index bd7aaf81a..cc78f4b23 100644 --- a/project/jni/application/fheroes2/AndroidAppSettings.cfg +++ b/project/jni/application/fheroes2/AndroidAppSettings.cfg @@ -22,8 +22,8 @@ AppTouchscreenKeyboardKeysAmount=0 AppTouchscreenKeyboardKeysAmountAutoFire=0 RedefinedKeysScreenKb="LCTRL M T H E C SPACE C S L" MultiABI=n -AppVersionCode=225512 -AppVersionName="2255.12" +AppVersionCode=225912 +AppVersionName="2259.12" CompiledLibraries="sdl_net sdl_mixer sdl_image sdl_ttf png intl" CustomBuildScript=n AppCflags='-finline-functions -O2 -DWITH_ZLIB -DWITH_MIXER -DWITH_XML -DWITH_IMAGE -DWITH_TTF -DWITH_AI=simple' diff --git a/project/jni/application/src b/project/jni/application/src index 104f796a6..59d41f41e 120000 --- a/project/jni/application/src +++ b/project/jni/application/src @@ -1 +1 @@ -ballfield \ No newline at end of file +fheroes2 \ No newline at end of file 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 a2d7a2c4d..cacb0429d 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 @@ -106,7 +106,7 @@ int rightClickTimeout = 0; int mouseInitialX = -1; int mouseInitialY = -1; unsigned int mouseInitialTime = 0; -int deferredMouseTap = 0; +volatile int deferredMouseTap = 0; int relativeMovement = 0; int relativeMovementSpeed = 2; int relativeMovementAccel = 0; @@ -415,10 +415,12 @@ JAVA_EXPORT_NAME(DemoGLSurfaceView_nativeMouse) ( JNIEnv* env, jobject thiz, j } if( action == MOUSE_UP ) { + SDL_ANDROID_MainThreadPushMouseButton( SDL_RELEASED, SDL_BUTTON_RIGHT ); + if( mouseInitialX >= 0 && mouseInitialY >= 0 && ( leftClickMethod == LEFT_CLICK_WITH_TAP || leftClickMethod == LEFT_CLICK_WITH_TAP_OR_TIMEOUT ) && - abs(mouseInitialX - x) < SDL_ANDROID_sFakeWindowHeight / 8 && - abs(mouseInitialY - y) < SDL_ANDROID_sFakeWindowHeight / 8 && + abs(mouseInitialX - x) < SDL_ANDROID_sFakeWindowHeight / 16 && + abs(mouseInitialY - y) < SDL_ANDROID_sFakeWindowHeight / 16 && SDL_GetTicks() - mouseInitialTime < 700 ) { SDL_ANDROID_MainThreadPushMouseMotion(mouseInitialX, mouseInitialY); @@ -429,10 +431,7 @@ JAVA_EXPORT_NAME(DemoGLSurfaceView_nativeMouse) ( JNIEnv* env, jobject thiz, j } else { - if( SDL_GetMouseState( NULL, NULL ) & SDL_BUTTON(SDL_BUTTON_LEFT) ) - SDL_ANDROID_MainThreadPushMouseButton( SDL_RELEASED, SDL_BUTTON_LEFT ); - if( SDL_GetMouseState( NULL, NULL ) & SDL_BUTTON(SDL_BUTTON_RIGHT) ) - SDL_ANDROID_MainThreadPushMouseButton( SDL_RELEASED, SDL_BUTTON_RIGHT ); + SDL_ANDROID_MainThreadPushMouseButton( SDL_RELEASED, SDL_BUTTON_LEFT ); } SDL_ANDROID_ShowScreenUnderFingerRect.w = SDL_ANDROID_ShowScreenUnderFingerRect.h = 0; @@ -520,7 +519,7 @@ JAVA_EXPORT_NAME(DemoGLSurfaceView_nativeMouse) ( JNIEnv* env, jobject thiz, j leftClickMethod == LEFT_CLICK_WITH_TIMEOUT || leftClickMethod == LEFT_CLICK_WITH_TAP || leftClickMethod == LEFT_CLICK_WITH_TAP_OR_TIMEOUT || rightClickMethod == RIGHT_CLICK_WITH_TIMEOUT ) ) { - if( abs(mouseInitialX - x) >= SDL_ANDROID_sFakeWindowHeight / 6 || abs(mouseInitialY - y) >= SDL_ANDROID_sFakeWindowHeight / 6 ) + if( abs(mouseInitialX - x) >= SDL_ANDROID_sFakeWindowHeight / 10 || abs(mouseInitialY - y) >= SDL_ANDROID_sFakeWindowHeight / 10 ) { mouseInitialX = -1; mouseInitialY = -1; @@ -586,8 +585,10 @@ void ProcessDeferredMouseTap() if( deferredMouseTap > 0 ) { deferredMouseTap--; - if( !deferredMouseTap ) + if( deferredMouseTap <= 0 ) SDL_ANDROID_MainThreadPushMouseButton( SDL_RELEASED, SDL_BUTTON_LEFT ); + else if( oldMouseX > 0 ) // Force application to redraw, and call SDL_Flip() + SDL_ANDROID_MainThreadPushMouseMotion(oldMouseX - 1, oldMouseY); } }