mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-04 00:49:02 -06:00 
			
		
		
		
	android: cleanup touch update loop
This commit is contained in:
		@@ -341,34 +341,6 @@ public final class InputOverlay extends SurfaceView implements OnTouchListener {
 | 
			
		||||
            return onTouchWhileEditing(event);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        int pointerIndex = event.getActionIndex();
 | 
			
		||||
 | 
			
		||||
        if (mPreferences.getBoolean("isTouchEnabled", true)) {
 | 
			
		||||
            switch (event.getAction() & MotionEvent.ACTION_MASK) {
 | 
			
		||||
                case MotionEvent.ACTION_DOWN:
 | 
			
		||||
                case MotionEvent.ACTION_POINTER_DOWN:
 | 
			
		||||
                    if (NativeLibrary.onTouchEvent(event.getX(pointerIndex), event.getY(pointerIndex), true)) {
 | 
			
		||||
                        mTouchscreenPointerId = event.getPointerId(pointerIndex);
 | 
			
		||||
                    }
 | 
			
		||||
                    break;
 | 
			
		||||
                case MotionEvent.ACTION_UP:
 | 
			
		||||
                case MotionEvent.ACTION_POINTER_UP:
 | 
			
		||||
                    if (mTouchscreenPointerId == event.getPointerId(pointerIndex)) {
 | 
			
		||||
                        // We don't really care where the touch has been released. We only care whether it has been
 | 
			
		||||
                        // released or not.
 | 
			
		||||
                        NativeLibrary.onTouchEvent(0, 0, false);
 | 
			
		||||
                        mTouchscreenPointerId = -1;
 | 
			
		||||
                    }
 | 
			
		||||
                    break;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            for (int i = 0; i < event.getPointerCount(); i++) {
 | 
			
		||||
                if (mTouchscreenPointerId == event.getPointerId(i)) {
 | 
			
		||||
                    NativeLibrary.onTouchMoved(event.getX(i), event.getY(i));
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        for (InputOverlayDrawableButton button : overlayButtons) {
 | 
			
		||||
            if (!button.updateStatus(event)) {
 | 
			
		||||
                continue;
 | 
			
		||||
@@ -395,11 +367,61 @@ public final class InputOverlay extends SurfaceView implements OnTouchListener {
 | 
			
		||||
            NativeLibrary.onGamePadEvent(NativeLibrary.TouchScreenDevice, joystick.getButtonId(), joystick.getButtonStatus());
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (!mPreferences.getBoolean("isTouchEnabled", true)) {
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        int pointerIndex = event.getActionIndex();
 | 
			
		||||
        int xPosition = (int) event.getX(pointerIndex);
 | 
			
		||||
        int yPosition = (int) event.getY(pointerIndex);
 | 
			
		||||
        int pointerId = event.getPointerId(pointerIndex);
 | 
			
		||||
        int motion_event = event.getAction() & MotionEvent.ACTION_MASK;
 | 
			
		||||
        boolean isActionDown = motion_event == MotionEvent.ACTION_DOWN || motion_event == MotionEvent.ACTION_POINTER_DOWN;
 | 
			
		||||
        boolean isActionMove = motion_event == MotionEvent.ACTION_MOVE;
 | 
			
		||||
        boolean isActionUp = motion_event == MotionEvent.ACTION_UP || motion_event == MotionEvent.ACTION_POINTER_UP;
 | 
			
		||||
 | 
			
		||||
        if (isActionDown && !isTouchInputConsumed(pointerId)) {
 | 
			
		||||
            NativeLibrary.onTouchEvent(xPosition, yPosition, true);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (isActionMove) {
 | 
			
		||||
            for (int i = 0; i < event.getPointerCount(); i++) {
 | 
			
		||||
                int fingerId = event.getPointerId(i);
 | 
			
		||||
                if (isTouchInputConsumed(fingerId)) {
 | 
			
		||||
                    continue;
 | 
			
		||||
                }
 | 
			
		||||
                NativeLibrary.onTouchMoved(event.getX(i), event.getY(i));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (isActionUp && !isTouchInputConsumed(pointerId)) {
 | 
			
		||||
            NativeLibrary.onTouchEvent(xPosition, yPosition, false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        invalidate();
 | 
			
		||||
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private boolean isTouchInputConsumed(int track_id) {
 | 
			
		||||
        for (InputOverlayDrawableButton button : overlayButtons) {
 | 
			
		||||
            if (button.getTrackId() == track_id) {
 | 
			
		||||
                return true;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        for (InputOverlayDrawableDpad dpad : overlayDpads) {
 | 
			
		||||
            if (dpad.getTrackId() == track_id) {
 | 
			
		||||
                return true;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        for (InputOverlayDrawableJoystick joystick : overlayJoysticks) {
 | 
			
		||||
            if (joystick.getTrackId() == track_id) {
 | 
			
		||||
                return true;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean onTouchWhileEditing(MotionEvent event) {
 | 
			
		||||
        // TODO: Reimplement this
 | 
			
		||||
        return true;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user