Fixed invalid left button press event for USB mouse, added mousewheel events
This commit is contained in:
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -22,3 +22,6 @@
|
|||||||
[submodule "project/jni/application/openarena/engine"]
|
[submodule "project/jni/application/openarena/engine"]
|
||||||
path = project/jni/application/openarena/engine
|
path = project/jni/application/openarena/engine
|
||||||
url = https://github.com/pelya/openarena-engine.git
|
url = https://github.com/pelya/openarena-engine.git
|
||||||
|
[submodule "project/jni/application/scummvm/scummvm"]
|
||||||
|
path = project/jni/application/scummvm/scummvm
|
||||||
|
url = https://github.com/scummvm/scummvm.git
|
||||||
|
|||||||
@@ -397,7 +397,6 @@ abstract class DifferentTouchInput
|
|||||||
public void process(final MotionEvent event)
|
public void process(final MotionEvent event)
|
||||||
{
|
{
|
||||||
//System.out.println("Got motion event, type " + (int)(event.getAction()) + " X " + (int)event.getX() + " Y " + (int)event.getY() + " buttons " + buttonState + " source " + event.getSource());
|
//System.out.println("Got motion event, type " + (int)(event.getAction()) + " X " + (int)event.getX() + " Y " + (int)event.getY() + " buttons " + buttonState + " source " + event.getSource());
|
||||||
super.process(event); // Push mouse coordinate first
|
|
||||||
int buttonStateNew = event.getButtonState();
|
int buttonStateNew = event.getButtonState();
|
||||||
if( buttonStateNew != buttonState )
|
if( buttonStateNew != buttonState )
|
||||||
{
|
{
|
||||||
@@ -408,6 +407,19 @@ abstract class DifferentTouchInput
|
|||||||
}
|
}
|
||||||
buttonState = buttonStateNew;
|
buttonState = buttonStateNew;
|
||||||
}
|
}
|
||||||
|
super.process(event); // Push mouse coordinate first
|
||||||
|
}
|
||||||
|
public void processGenericEvent(final MotionEvent event)
|
||||||
|
{
|
||||||
|
// Process mousewheel
|
||||||
|
if( event.getAction() == MotionEvent.ACTION_SCROLL )
|
||||||
|
{
|
||||||
|
int scrollX = Math.round(event.getAxisValue(MotionEvent.AXIS_HSCROLL));
|
||||||
|
int scrollY = Math.round(event.getAxisValue(MotionEvent.AXIS_VSCROLL));
|
||||||
|
DemoGLSurfaceView.nativeMouseWheel(scrollX, scrollY);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
super.processGenericEvent(event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private static class GalaxyNoteIcsTouchInput extends IcsTouchInput
|
private static class GalaxyNoteIcsTouchInput extends IcsTouchInput
|
||||||
@@ -720,7 +732,7 @@ class DemoGLSurfaceView extends GLSurfaceView_SDL {
|
|||||||
public static native void initJavaCallbacks();
|
public static native void initJavaCallbacks();
|
||||||
public static native void nativeHardwareMouseDetected( int detected );
|
public static native void nativeHardwareMouseDetected( int detected );
|
||||||
public static native void nativeMouseButtonsPressed( int buttonId, int pressedState );
|
public static native void nativeMouseButtonsPressed( int buttonId, int pressedState );
|
||||||
|
public static native void nativeMouseWheel(int scrollX, int scrollY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -593,7 +593,7 @@ int main(int argc, char* argv[])
|
|||||||
if( b & SDL_BUTTON_RMASK )
|
if( b & SDL_BUTTON_RMASK )
|
||||||
color |= 0x1f0;
|
color |= 0x1f0;
|
||||||
if( b & SDL_BUTTON_MMASK )
|
if( b & SDL_BUTTON_MMASK )
|
||||||
color |= 0x1f;
|
color |= 0x0f;
|
||||||
}
|
}
|
||||||
r.x = mx;
|
r.x = mx;
|
||||||
r.y = my;
|
r.y = my;
|
||||||
@@ -613,6 +613,12 @@ int main(int argc, char* argv[])
|
|||||||
if(evt.key.keysym.sym == SDLK_ESCAPE)
|
if(evt.key.keysym.sym == SDLK_ESCAPE)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
if(evt.type == SDL_MOUSEBUTTONUP || evt.type == SDL_MOUSEBUTTONDOWN)
|
||||||
|
{
|
||||||
|
__android_log_print(ANDROID_LOG_INFO, "Ballfield", "SDL mouse button event: evt %s state %s button %d coords %d:%d", evt.type == SDL_MOUSEBUTTONUP ? "UP " : "DOWN" , evt.button.state == SDL_PRESSED ? "PRESSED " : "RELEASED", (int)evt.button.button, (int)evt.button.x, (int)evt.button.y);
|
||||||
|
if(evt.key.keysym.sym == SDLK_ESCAPE)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
if(evt.type == SDL_VIDEORESIZE)
|
if(evt.type == SDL_VIDEORESIZE)
|
||||||
__android_log_print(ANDROID_LOG_INFO, "Ballfield", "SDL resize event: %d x %d", evt.resize.w, evt.resize.h);
|
__android_log_print(ANDROID_LOG_INFO, "Ballfield", "SDL resize event: %d x %d", evt.resize.w, evt.resize.h);
|
||||||
if(evt.type == SDL_ACTIVEEVENT)
|
if(evt.type == SDL_ACTIVEEVENT)
|
||||||
|
|||||||
@@ -14,6 +14,8 @@ SwVideoMode=y
|
|||||||
SdlVideoResize=y
|
SdlVideoResize=y
|
||||||
SdlVideoResizeKeepAspect=n
|
SdlVideoResizeKeepAspect=n
|
||||||
CompatibilityHacks=n
|
CompatibilityHacks=n
|
||||||
|
CompatibilityHacksStaticInit=n
|
||||||
|
CompatibilityHacksTextInputEmulatesHwKeyboard=n
|
||||||
AppUsesMouse=y
|
AppUsesMouse=y
|
||||||
AppNeedsTwoButtonMouse=y
|
AppNeedsTwoButtonMouse=y
|
||||||
ShowMouseCursor=n
|
ShowMouseCursor=n
|
||||||
|
|||||||
1
project/jni/application/scummvm/scummvm
Submodule
1
project/jni/application/scummvm/scummvm
Submodule
Submodule project/jni/application/scummvm/scummvm added at eb6c60cec0
@@ -574,7 +574,8 @@ JAVA_EXPORT_NAME(DemoGLSurfaceView_nativeMotionEvent) ( JNIEnv* env, jobject t
|
|||||||
if( leftClickMethod == LEFT_CLICK_NORMAL )
|
if( leftClickMethod == LEFT_CLICK_NORMAL )
|
||||||
{
|
{
|
||||||
SDL_ANDROID_MainThreadPushMouseMotion(x, y);
|
SDL_ANDROID_MainThreadPushMouseMotion(x, y);
|
||||||
SDL_ANDROID_MainThreadPushMouseButton( SDL_PRESSED, SDL_BUTTON_LEFT );
|
if( !hardwareMouseDetected || currentMouseButtons == 0 )
|
||||||
|
SDL_ANDROID_MainThreadPushMouseButton( SDL_PRESSED, SDL_BUTTON_LEFT );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -995,6 +996,52 @@ JAVA_EXPORT_NAME(DemoGLSurfaceView_nativeMouseButtonsPressed) (JNIEnv* env, jobj
|
|||||||
SDL_ANDROID_MainThreadPushMouseButton( pressedState ? SDL_PRESSED : SDL_RELEASED, btn );
|
SDL_ANDROID_MainThreadPushMouseButton( pressedState ? SDL_PRESSED : SDL_RELEASED, btn );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JNIEXPORT void JNICALL
|
||||||
|
JAVA_EXPORT_NAME(DemoGLSurfaceView_nativeMouseWheel) (JNIEnv* env, jobject thiz, jint scrollX, jint scrollY)
|
||||||
|
{
|
||||||
|
#if SDL_VERSION_ATLEAST(1,3,0)
|
||||||
|
SDL_ANDROID_MainThreadPushMouseWheel( scrollX, scrollY );
|
||||||
|
#else
|
||||||
|
// TODO: direction might get inverted
|
||||||
|
for( ; scrollX > 0; scrollX-- )
|
||||||
|
{
|
||||||
|
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_PRESSED, TranslateKey(KEYCODE_DPAD_RIGHT) );
|
||||||
|
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, TranslateKey(KEYCODE_DPAD_RIGHT) );
|
||||||
|
}
|
||||||
|
for( ; scrollX < 0; scrollX++ )
|
||||||
|
{
|
||||||
|
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_PRESSED, TranslateKey(KEYCODE_DPAD_LEFT) );
|
||||||
|
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, TranslateKey(KEYCODE_DPAD_LEFT) );
|
||||||
|
}
|
||||||
|
for( ; scrollY > 0; scrollY-- )
|
||||||
|
{
|
||||||
|
if(!isMouseUsed)
|
||||||
|
{
|
||||||
|
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_PRESSED, TranslateKey(KEYCODE_DPAD_DOWN) );
|
||||||
|
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, TranslateKey(KEYCODE_DPAD_DOWN) );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SDL_ANDROID_MainThreadPushMouseButton( SDL_PRESSED, SDL_BUTTON_WHEELDOWN );
|
||||||
|
SDL_ANDROID_MainThreadPushMouseButton( SDL_RELEASED, SDL_BUTTON_WHEELDOWN );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for( ; scrollY < 0; scrollY++ )
|
||||||
|
{
|
||||||
|
if(!isMouseUsed)
|
||||||
|
{
|
||||||
|
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_PRESSED, TranslateKey(KEYCODE_DPAD_UP) );
|
||||||
|
SDL_ANDROID_MainThreadPushKeyboardKey( SDL_RELEASED, TranslateKey(KEYCODE_DPAD_UP) );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SDL_ANDROID_MainThreadPushMouseButton( SDL_PRESSED, SDL_BUTTON_WHEELUP );
|
||||||
|
SDL_ANDROID_MainThreadPushMouseButton( SDL_RELEASED, SDL_BUTTON_WHEELUP );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
JAVA_EXPORT_NAME(Settings_nativeSetJoystickUsed) (JNIEnv* env, jobject thiz)
|
JAVA_EXPORT_NAME(Settings_nativeSetJoystickUsed) (JNIEnv* env, jobject thiz)
|
||||||
{
|
{
|
||||||
@@ -1443,7 +1490,7 @@ extern void SDL_ANDROID_PumpEvents()
|
|||||||
switch( ev.type )
|
switch( ev.type )
|
||||||
{
|
{
|
||||||
case SDL_MOUSEMOTION:
|
case SDL_MOUSEMOTION:
|
||||||
SDL_SendMouseMotion(ANDROID_CurrentWindow, 0, ev.motion.x, ev.motion.y);
|
SDL_SendMouseMotion( ANDROID_CurrentWindow, 0, ev.motion.x, ev.motion.y );
|
||||||
break;
|
break;
|
||||||
case SDL_MOUSEBUTTONDOWN:
|
case SDL_MOUSEBUTTONDOWN:
|
||||||
if( ((oldMouseButtons & SDL_BUTTON(ev.button.button)) != 0) != ev.button.state )
|
if( ((oldMouseButtons & SDL_BUTTON(ev.button.button)) != 0) != ev.button.state )
|
||||||
@@ -1478,6 +1525,9 @@ extern void SDL_ANDROID_PumpEvents()
|
|||||||
case SDL_TEXTINPUT:
|
case SDL_TEXTINPUT:
|
||||||
SDL_SendKeyboardText(ev.text.text);
|
SDL_SendKeyboardText(ev.text.text);
|
||||||
break;
|
break;
|
||||||
|
case SDL_MOUSEWHEEL:
|
||||||
|
SDL_SendMouseWheel( ANDROID_CurrentWindow, ev.wheel.x, ev.wheel.y );
|
||||||
|
break;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1764,6 +1814,24 @@ extern void SDL_ANDROID_MainThreadPushMultitouchMotion(int id, int x, int y, int
|
|||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extern void SDL_ANDROID_MainThreadPushMouseWheel(int x, int y)
|
||||||
|
{
|
||||||
|
#if SDL_VERSION_ATLEAST(1,3,0)
|
||||||
|
int nextEvent = getNextEventAndLock();
|
||||||
|
if( nextEvent == -1 )
|
||||||
|
return;
|
||||||
|
|
||||||
|
SDL_Event * ev = &BufferedEvents[BufferedEventsEnd];
|
||||||
|
|
||||||
|
ev->type = SDL_MOUSEWHEEL;
|
||||||
|
ev->wheel.x = x;
|
||||||
|
ev->wheel.y = y;
|
||||||
|
|
||||||
|
BufferedEventsEnd = nextEvent;
|
||||||
|
SDL_mutexV(BufferedEventsMutex);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
enum { DEFERRED_TEXT_COUNT = 256 };
|
enum { DEFERRED_TEXT_COUNT = 256 };
|
||||||
static struct { int scancode; int unicode; int down; } deferredText[DEFERRED_TEXT_COUNT];
|
static struct { int scancode; int unicode; int down; } deferredText[DEFERRED_TEXT_COUNT];
|
||||||
static int deferredTextIdx1 = 0;
|
static int deferredTextIdx1 = 0;
|
||||||
|
|||||||
@@ -194,12 +194,12 @@ extern int SDL_ANDROID_isTouchscreenKeyboardUsed;
|
|||||||
extern void SDL_ANDROID_MainThreadPushMouseMotion(int x, int y);
|
extern void SDL_ANDROID_MainThreadPushMouseMotion(int x, int y);
|
||||||
extern void SDL_ANDROID_MainThreadPushMouseButton(int pressed, int button);
|
extern void SDL_ANDROID_MainThreadPushMouseButton(int pressed, int button);
|
||||||
extern void SDL_ANDROID_MainThreadPushKeyboardKey(int pressed, SDL_scancode key);
|
extern void SDL_ANDROID_MainThreadPushKeyboardKey(int pressed, SDL_scancode key);
|
||||||
extern void SDL_ANDROID_MainThreadPushMultitouchButton(int id, int pressed, int x, int y, int force);
|
extern void SDL_ANDROID_MainThreadPushMultitouchButton(int id, int pressed, int x, int y, int force); // SDL 1.3 only
|
||||||
extern void SDL_ANDROID_MainThreadPushMultitouchMotion(int id, int x, int y, int force);
|
extern void SDL_ANDROID_MainThreadPushMultitouchMotion(int id, int x, int y, int force); // SDL 1.3 only
|
||||||
extern void SDL_ANDROID_MainThreadPushJoystickAxis(int joy, int axis, int value);
|
extern void SDL_ANDROID_MainThreadPushJoystickAxis(int joy, int axis, int value);
|
||||||
extern void SDL_ANDROID_MainThreadPushJoystickButton(int joy, int button, int pressed);
|
extern void SDL_ANDROID_MainThreadPushJoystickButton(int joy, int button, int pressed);
|
||||||
extern void SDL_ANDROID_MainThreadPushJoystickBall(int joy, int ball, int x, int y);
|
extern void SDL_ANDROID_MainThreadPushJoystickBall(int joy, int ball, int x, int y);
|
||||||
extern void SDL_ANDROID_MainThreadPushText( int ascii, int unicode );
|
extern void SDL_ANDROID_MainThreadPushText( int ascii, int unicode );
|
||||||
extern void SDL_android_init_keymap(SDLKey *SDL_android_keymap);
|
extern void SDL_android_init_keymap(SDLKey *SDL_android_keymap);
|
||||||
|
extern void SDL_ANDROID_MainThreadPushMouseWheel( int x, int y ); // SDL 1.3 only
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user