From 08a4b6143044f442d60eba9fd8f1b04ba4d8c786 Mon Sep 17 00:00:00 2001 From: Sergii Pylypenko Date: Thu, 15 May 2014 22:47:50 +0300 Subject: [PATCH] Refreshing screen on mouse click is back as an option in AndroidAppSettings.cfg, enabled by default --- changeAppSettings.sh | 23 +++++++++++++++++-- project/java/Globals.java | 1 + project/java/Settings.java | 6 +++-- .../src/video/android/SDL_androidinput.c | 9 +++++++- 4 files changed, 34 insertions(+), 5 deletions(-) diff --git a/changeAppSettings.sh b/changeAppSettings.sh index 47e694ea9..ea6e9d2d1 100755 --- a/changeAppSettings.sh +++ b/changeAppSettings.sh @@ -45,7 +45,6 @@ if [ "$AppUsesJoystick" != "y" ]; then AppUsesSecondJoystick=n fi - MenuOptionsAvailable= for FF in Menu MenuMisc MenuMouse MenuKeyboard ; do MenuOptionsAvailable1=`grep 'extends Menu' $JAVA_SRC_PATH/Settings$FF.java | sed "s/.* class \(.*\) extends .*/Settings$FF.\1/" | tr '\n' ' '` @@ -58,6 +57,15 @@ if [ -z "$CompatibilityHacksForceScreenUpdate" ]; then CompatibilityHacksForceScreenUpdate=$CompatibilityHacks fi +if [ -z "$CompatibilityHacksForceScreenUpdateMouseClick" ]; then + CompatibilityHacksForceScreenUpdateMouseClick=y +fi + +if [ -z "$TouchscreenKeysTheme" ]; then + TouchscreenKeysTheme=2 +fi + + if [ -z "$AppVersionCode" -o "-$AUTO" != "-a" ]; then echo echo -n "Application version code (integer) ($AppVersionCode): " @@ -172,6 +180,10 @@ echo "# Application does not call SDL_Flip() or SDL_UpdateRects() appropriately, echo "# enabling the compatibility mode will force screen update every 100 milliseconds, which is laggy and inefficient (y) or (n)" >> AndroidAppSettings.cfg echo CompatibilityHacksForceScreenUpdate=$CompatibilityHacksForceScreenUpdate >> AndroidAppSettings.cfg echo >> AndroidAppSettings.cfg +echo "# Application does not call SDL_Flip() or SDL_UpdateRects() after mouse click (ScummVM and all Amiga emulators do that) -" >> AndroidAppSettings.cfg +echo "# force screen update by moving mouse cursor a little after each click (y) or (n)" >> AndroidAppSettings.cfg +echo CompatibilityHacksForceScreenUpdateMouseClick=$CompatibilityHacksForceScreenUpdateMouseClick >> AndroidAppSettings.cfg +echo >> AndroidAppSettings.cfg echo "# Application initializes SDL audio/video inside static constructors (which is bad, you won't be able to run ndk-gdb) (y)/(n)" >> AndroidAppSettings.cfg echo CompatibilityHacksStaticInit=$CompatibilityHacksStaticInit >> AndroidAppSettings.cfg echo >> AndroidAppSettings.cfg @@ -347,7 +359,7 @@ echo >> AndroidAppSettings.cfg echo "# Your AdMob test device ID, to receive a test ad" >> AndroidAppSettings.cfg echo AdmobTestDeviceId=$AdmobTestDeviceId >> AndroidAppSettings.cfg echo >> AndroidAppSettings.cfg -echo "# Your AdMob banner size (BANNER/IAB_BANNER/IAB_LEADERBOARD/IAB_MRECT/IAB_WIDE_SKYSCRAPER/SMART_BANNER)" >> AndroidAppSettings.cfg +echo "# Your AdMob banner size (BANNER/FULL_BANNER/LEADERBOARD/MEDIUM_RECTANGLE/SMART_BANNER/WIDE_SKYSCRAPER/FULL_WIDTH:Height/Width:AUTO_HEIGHT/Width:Height)" >> AndroidAppSettings.cfg echo AdmobBannerSize=$AdmobBannerSize >> AndroidAppSettings.cfg echo >> AndroidAppSettings.cfg fi @@ -430,6 +442,12 @@ else CompatibilityHacksForceScreenUpdate=false fi +if [ "$CompatibilityHacksForceScreenUpdateMouseClick" = "y" ] ; then + CompatibilityHacksForceScreenUpdateMouseClick=true +else + CompatibilityHacksForceScreenUpdateMouseClick=false +fi + if [ "$CompatibilityHacksStaticInit" = "y" ] ; then CompatibilityHacksStaticInit=true else @@ -737,6 +755,7 @@ $SEDI "s/public static boolean NeedGles2 = .*;/public static boolean NeedGles2 = $SEDI "s/public static boolean CompatibilityHacksVideo = .*;/public static boolean CompatibilityHacksVideo = $CompatibilityHacksForceScreenUpdate;/" project/src/Globals.java $SEDI "s/public static boolean CompatibilityHacksStaticInit = .*;/public static boolean CompatibilityHacksStaticInit = $CompatibilityHacksStaticInit;/" project/src/Globals.java $SEDI "s/public static boolean CompatibilityHacksTextInputEmulatesHwKeyboard = .*;/public static boolean CompatibilityHacksTextInputEmulatesHwKeyboard = $CompatibilityHacksTextInputEmulatesHwKeyboard;/" project/src/Globals.java +$SEDI "s/public static boolean CompatibilityHacksForceScreenUpdateMouseClick = .*;/public static boolean CompatibilityHacksForceScreenUpdateMouseClick = $CompatibilityHacksForceScreenUpdateMouseClick;/" project/src/Globals.java $SEDI "s/public static boolean HorizontalOrientation = .*;/public static boolean HorizontalOrientation = $HorizontalOrientation;/" project/src/Globals.java $SEDI "s^public static boolean KeepAspectRatioDefaultSetting = .*^public static boolean KeepAspectRatioDefaultSetting = $SdlVideoResizeKeepAspect;^" project/src/Globals.java $SEDI "s/public static boolean InhibitSuspend = .*;/public static boolean InhibitSuspend = $InhibitSuspend;/" project/src/Globals.java diff --git a/project/java/Globals.java b/project/java/Globals.java index cc582a221..6fd1b09df 100644 --- a/project/java/Globals.java +++ b/project/java/Globals.java @@ -41,6 +41,7 @@ class Globals public static boolean NeedStencilBuffer = false; public static boolean NeedGles2 = false; public static boolean CompatibilityHacksVideo = false; + public static boolean CompatibilityHacksForceScreenUpdateMouseClick = true; public static boolean CompatibilityHacksStaticInit = false; public static boolean CompatibilityHacksTextInputEmulatesHwKeyboard = false; public static boolean HorizontalOrientation = true; diff --git a/project/java/Settings.java b/project/java/Settings.java index ae234e95b..1fd89633d 100644 --- a/project/java/Settings.java +++ b/project/java/Settings.java @@ -510,7 +510,8 @@ class Settings Globals.HoverJitterFilter ? 1 : 0, Globals.RightMouseButtonLongPress ? 1 : 0, Globals.MoveMouseWithGyroscope ? 1 : 0, - Globals.MoveMouseWithGyroscopeSpeed); + Globals.MoveMouseWithGyroscopeSpeed, + Globals.CompatibilityHacksForceScreenUpdateMouseClick ? 1 : 0 ); } static void Apply(MainActivity p) @@ -787,7 +788,8 @@ class Settings int relativeMovement, int relativeMovementSpeed, int relativeMovementAccel, int showMouseCursor, int HoverJitterFilter, int RightMouseButtonLongPress, - int MoveMouseWithGyroscope, int MoveMouseWithGyroscopeSpeed); + int MoveMouseWithGyroscope, int MoveMouseWithGyroscopeSpeed, + int ForceScreenUpdateMouseClick); private static native void nativeSetJoystickUsed(int amount); private static native void nativeSetAccelerometerUsed(); private static native void nativeSetMultitouchUsed(); diff --git a/project/jni/sdl-1.2/src/video/android/SDL_androidinput.c b/project/jni/sdl-1.2/src/video/android/SDL_androidinput.c index 59263082e..62ae41798 100644 --- a/project/jni/sdl-1.2/src/video/android/SDL_androidinput.c +++ b/project/jni/sdl-1.2/src/video/android/SDL_androidinput.c @@ -139,6 +139,7 @@ static int moveMouseWithGyroscope = 0; static float moveMouseWithGyroscopeSpeed = 5.0f; static int moveMouseWithGyroscopeX = 0; static int moveMouseWithGyroscopeY = 0; +static int forceScreenUpdateMouseClick = 1; static pthread_t mouseClickTimeoutThreadId = 0; static sem_t mouseClickTimeoutSemaphore; @@ -515,6 +516,8 @@ static void ProcessMouseUp( int x, int y ) { SDL_ANDROID_MainThreadPushMouseMotion( mouseInitialX, mouseInitialY ); SDL_ANDROID_MainThreadPushMouseButton( SDL_PRESSED, SDL_BUTTON_LEFT ); + if( forceScreenUpdateMouseClick && mouseInitialX > 0 ) + SDL_ANDROID_MainThreadPushMouseMotion( mouseInitialX - 1, mouseInitialY ); mouseInitialX = -1; mouseInitialY = -1; deferredMouseTap = 1; @@ -862,6 +865,8 @@ static void ProcessDeferredMouseTap() { deferredMouseTap = 0; SDL_ANDROID_MainThreadPushMouseButton( SDL_RELEASED, SDL_BUTTON_LEFT ); + if( forceScreenUpdateMouseClick && SDL_ANDROID_currentMouseX + 1 < SDL_ANDROID_sFakeWindowWidth ) + SDL_ANDROID_MainThreadPushMouseMotion( SDL_ANDROID_currentMouseX + 1, SDL_ANDROID_currentMouseY ); moveMouseWithGyroscopeX = 0; moveMouseWithGyroscopeY = 0; } @@ -1094,7 +1099,8 @@ JAVA_EXPORT_NAME(Settings_nativeSetMouseUsed) (JNIEnv* env, jobject thiz, jint LeftClickTimeout, jint RightClickTimeout, jint RelativeMovement, jint RelativeMovementSpeed, jint RelativeMovementAccel, jint ShowMouseCursor, jint HoverJitterFilter, jint RightMouseButtonLongPress, - jint MoveMouseWithGyroscope, jint MoveMouseWithGyroscopeSpeed) + jint MoveMouseWithGyroscope, jint MoveMouseWithGyroscopeSpeed, + jint ForceScreenUpdateMouseClick) { SDL_ANDROID_isMouseUsed = 1; rightClickMethod = RightClickMethod; @@ -1119,6 +1125,7 @@ JAVA_EXPORT_NAME(Settings_nativeSetMouseUsed) (JNIEnv* env, jobject thiz, moveMouseWithGyroscope = MoveMouseWithGyroscope; moveMouseWithGyroscopeSpeed = 0.0625f * MoveMouseWithGyroscopeSpeed * MoveMouseWithGyroscopeSpeed + 0.125f * MoveMouseWithGyroscopeSpeed + 0.5f; // Scale value from 0.5 to 2, with 1 at the middle moveMouseWithGyroscopeSpeed *= 5.0f; + forceScreenUpdateMouseClick = ForceScreenUpdateMouseClick; //__android_log_print(ANDROID_LOG_INFO, "libSDL", "moveMouseWithGyroscopeSpeed %d = %f", MoveMouseWithGyroscopeSpeed, moveMouseWithGyroscopeSpeed); if( !mouseClickTimeoutInitialized && ( leftClickMethod == LEFT_CLICK_WITH_TAP ||