Refreshing screen on mouse click is back as an option in AndroidAppSettings.cfg, enabled by default

This commit is contained in:
Sergii Pylypenko
2014-05-15 22:47:50 +03:00
parent 8da66ca7a5
commit 08a4b61430
4 changed files with 34 additions and 5 deletions

View File

@@ -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

View File

@@ -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;

View File

@@ -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();

View File

@@ -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 ||