Proper mouse handling on nvidia devices
This commit is contained in:
parent
fbcf7758bf
commit
f51e6ab1e2
2 changed files with 62 additions and 10 deletions
|
@ -1 +1 @@
|
||||||
Subproject commit 768ccae780dc4b51ed7492e2041a6b8762920ac7
|
Subproject commit 7eeb1baab6b4b5c5d86eb9594bbfab92d8219c17
|
|
@ -57,6 +57,7 @@ public class XashActivity extends Activity {
|
||||||
public static boolean mEngineReady = false;
|
public static boolean mEngineReady = false;
|
||||||
public static boolean mEnginePaused = false;
|
public static boolean mEnginePaused = false;
|
||||||
public static Vibrator mVibrator;
|
public static Vibrator mVibrator;
|
||||||
|
public static boolean fMouseShown = true;
|
||||||
|
|
||||||
private static boolean mHasVibrator;
|
private static boolean mHasVibrator;
|
||||||
private int mReturingWithResultCode = 0;
|
private int mReturingWithResultCode = 0;
|
||||||
|
@ -831,6 +832,7 @@ public class XashActivity extends Activity {
|
||||||
|
|
||||||
public static void showMouse( int show )
|
public static void showMouse( int show )
|
||||||
{
|
{
|
||||||
|
fMouseShown = show != 0;
|
||||||
handler.showMouse( show != 0 );
|
handler.showMouse( show != 0 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1229,6 +1231,8 @@ class EngineTouchListener_v1 implements View.OnTouchListener{
|
||||||
}
|
}
|
||||||
|
|
||||||
class EngineTouchListener_v5 implements View.OnTouchListener{
|
class EngineTouchListener_v5 implements View.OnTouchListener{
|
||||||
|
float lx=0, ly=0;
|
||||||
|
boolean secondarypressed = false;
|
||||||
// Touch events
|
// Touch events
|
||||||
public boolean onTouch(View v, MotionEvent event)
|
public boolean onTouch(View v, MotionEvent event)
|
||||||
{
|
{
|
||||||
|
@ -1239,8 +1243,19 @@ class EngineTouchListener_v5 implements View.OnTouchListener{
|
||||||
int mouseButton;
|
int mouseButton;
|
||||||
int i = -1;
|
int i = -1;
|
||||||
float x,y;
|
float x,y;
|
||||||
|
|
||||||
switch(action) {
|
switch(action) {
|
||||||
case MotionEvent.ACTION_MOVE:
|
case MotionEvent.ACTION_MOVE:
|
||||||
|
if( !XashActivity.fMouseShown && (XashActivity.handler.getSource(event) & InputDevice.SOURCE_MOUSE) != 0 )
|
||||||
|
{
|
||||||
|
x = event.getX();
|
||||||
|
y = event.getY();
|
||||||
|
|
||||||
|
XashActivity.nativeMouseMove(x - lx, y -ly);
|
||||||
|
lx = x;
|
||||||
|
ly = y;
|
||||||
|
return;
|
||||||
|
}
|
||||||
for (i = 0; i < pointerCount; i++) {
|
for (i = 0; i < pointerCount; i++) {
|
||||||
pointerFingerId = event.getPointerId(i);
|
pointerFingerId = event.getPointerId(i);
|
||||||
x = event.getX(i);
|
x = event.getX(i);
|
||||||
|
@ -1248,13 +1263,32 @@ class EngineTouchListener_v5 implements View.OnTouchListener{
|
||||||
XashActivity.nativeTouch(pointerFingerId, 2, x, y);
|
XashActivity.nativeTouch(pointerFingerId, 2, x, y);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MotionEvent.ACTION_UP:
|
|
||||||
case MotionEvent.ACTION_DOWN:
|
|
||||||
// Primary pointer up/down, the index is always zero
|
|
||||||
i = 0;
|
|
||||||
case MotionEvent.ACTION_POINTER_UP:
|
case MotionEvent.ACTION_POINTER_UP:
|
||||||
case MotionEvent.ACTION_POINTER_DOWN:
|
case MotionEvent.ACTION_POINTER_DOWN:
|
||||||
|
case MotionEvent.ACTION_UP:
|
||||||
|
case MotionEvent.ACTION_DOWN:
|
||||||
|
if( !XashActivity.fMouseShown && (XashActivity.handler.getSource(event) & InputDevice.SOURCE_MOUSE) != 0 )
|
||||||
|
{
|
||||||
|
lx = event.getX();
|
||||||
|
ly = event.getY();
|
||||||
|
boolean down = action == MotionEvent.ACTION_DOWN || action == MotionEvent.ACTION_POINTER_DOWN;
|
||||||
|
if( down && (event.getButtonState() & MotionEvent.BUTTON_SECONDARY) != 0 )
|
||||||
|
{
|
||||||
|
XashActivity.nativeKey( 1,-243 );
|
||||||
|
secondarypressed = true;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if( !down && secondarypressed && (event.getButtonState() & MotionEvent.BUTTON_SECONDARY) == 0 )
|
||||||
|
{
|
||||||
|
secondarypressed = false;
|
||||||
|
XashActivity.nativeKey( 0,-243 );
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
XashActivity.nativeKey( down?1:0,-241 );
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
i = 0;
|
||||||
|
|
||||||
// Non primary pointer up/down
|
// Non primary pointer up/down
|
||||||
if (i == -1) {
|
if (i == -1) {
|
||||||
i = event.getActionIndex();
|
i = event.getActionIndex();
|
||||||
|
@ -1404,8 +1438,8 @@ class JoystickHandler
|
||||||
class Wrap_NVMouseExtensions{
|
class Wrap_NVMouseExtensions{
|
||||||
private static Object inputManager;
|
private static Object inputManager;
|
||||||
private static Method mInputManager_setCursorVisibility;
|
private static Method mInputManager_setCursorVisibility;
|
||||||
private static int nMotionEvent_AXIS_RELATIVE_X = 0;
|
public static int nMotionEvent_AXIS_RELATIVE_X = 0;
|
||||||
private static int nMotionEvent_AXIS_RELATIVE_Y = 0;
|
public static int nMotionEvent_AXIS_RELATIVE_Y = 0;
|
||||||
|
|
||||||
|
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
|
@ -1548,17 +1582,35 @@ class JoystickHandler_v12 extends JoystickHandler
|
||||||
{
|
{
|
||||||
final int source = XashActivity.handler.getSource(event);
|
final int source = XashActivity.handler.getSource(event);
|
||||||
final int axisDevices = InputDevice.SOURCE_CLASS_JOYSTICK | InputDevice.SOURCE_GAMEPAD;
|
final int axisDevices = InputDevice.SOURCE_CLASS_JOYSTICK | InputDevice.SOURCE_GAMEPAD;
|
||||||
if( (source & axisDevices) != 0 )
|
|
||||||
return XashActivity.handler.handleAxis( event );
|
|
||||||
if( (source & InputDevice.SOURCE_MOUSE) != 0 && mNVMouseExtensions )
|
if( (source & InputDevice.SOURCE_MOUSE) != 0 && mNVMouseExtensions )
|
||||||
{
|
{
|
||||||
float x = event.getAxisValue(Wrap_NVMouseExtensions.getAxisRelativeX(), 0);
|
float x = event.getAxisValue(Wrap_NVMouseExtensions.getAxisRelativeX(), 0);
|
||||||
float y = event.getAxisValue(Wrap_NVMouseExtensions.getAxisRelativeY(), 0);
|
float y = event.getAxisValue(Wrap_NVMouseExtensions.getAxisRelativeY(), 0);
|
||||||
|
switch (event.getAction()) {
|
||||||
|
case MotionEvent.ACTION_SCROLL:
|
||||||
|
if (event.getAxisValue(MotionEvent.AXIS_VSCROLL) < 0.0f)
|
||||||
|
{
|
||||||
|
XashActivity.nativeKey(1,-239);
|
||||||
|
XashActivity.nativeKey(0,-239);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
XashActivity.nativeKey(1,-240);
|
||||||
|
XashActivity.nativeKey(0,-240);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
XashActivity.nativeMouseMove( x, y );
|
XashActivity.nativeMouseMove( x, y );
|
||||||
Log.v("XashInput", "MouseMove: " +x + " " + y );
|
Log.v("XashInput", "MouseMove: " +x + " " + y );
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( (source & axisDevices) != 0 )
|
||||||
|
return XashActivity.handler.handleAxis( event );
|
||||||
|
|
||||||
// TODO: Add it someday
|
// TODO: Add it someday
|
||||||
// else if( (event.getSource() & InputDevice.SOURCE_CLASS_TRACKBALL) == InputDevice.SOURCE_CLASS_TRACKBALL )
|
// else if( (event.getSource() & InputDevice.SOURCE_CLASS_TRACKBALL) == InputDevice.SOURCE_CLASS_TRACKBALL )
|
||||||
// return XashActivity.handleBall( event );
|
// return XashActivity.handleBall( event );
|
||||||
|
|
Loading…
Add table
Reference in a new issue