Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4cca7b53 authored by Siarhei Vishniakou's avatar Siarhei Vishniakou
Browse files

Convert motion flags to MotionEventFlags

These flags are now ftl - based.

Bug: none
Test: none
Flag: EXEMPT refactor
Change-Id: Iac570db38a7e7f636ebde152764aa72d89a309e3
parent 17db3ea5
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -152,7 +152,7 @@ status_t NativeInputEventSender::sendMotionEvent(uint32_t seq, const MotionEvent
                                                   event->getDeviceId(), event->getSource(),
                                                   event->getDisplayId(), event->getHmac(),
                                                   event->getAction(), event->getActionButton(),
                                                   event->getFlags(), event->getEdgeFlags(),
                                                   event->getFlags().get(), event->getEdgeFlags(),
                                                   event->getMetaState(), event->getButtonState(),
                                                   event->getClassification(),
                                                   event->getTransform(), event->getXPrecision(),
+11 −7
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@
#include <android_runtime/AndroidRuntime.h>
#include <android_runtime/Log.h>
#include <attestation/HmacKeyManager.h>
#include <ftl/flags.h>
#include <input/Input.h>
#include <log/log.h>
#include <nativehelper/JNIHelp.h>
@@ -322,7 +323,7 @@ static void pointerPropertiesFromNative(JNIEnv* env, const PointerProperties* po

static jlong android_view_MotionEvent_nativeInitialize(
        JNIEnv* env, jclass clazz, jlong nativePtr, jint deviceId, jint source, jint displayId,
        jint action, jint flags, jint edgeFlags, jint metaState, jint buttonState,
        jint action, jint jFlags, jint edgeFlags, jint metaState, jint buttonState,
        jint classification, jfloat xOffset, jfloat yOffset, jfloat xPrecision, jfloat yPrecision,
        jlong downTimeNanos, jlong eventTimeNanos, jint pointerCount,
        jobjectArray pointerPropertiesObjArray, jobjectArray pointerCoordsObjArray) {
@@ -339,6 +340,8 @@ static jlong android_view_MotionEvent_nativeInitialize(
        event = std::make_unique<MotionEvent>();
    }

    ftl::Flags<MotionFlag> flags(jFlags);

    ui::Transform transform;
    transform.set(xOffset, yOffset);
    const ui::Transform inverseTransform = transform.inverse();
@@ -364,8 +367,8 @@ static jlong android_view_MotionEvent_nativeInitialize(
        rawPointerCoords.emplace_back(pointerCoordsToNative(env, pointerCoordsObj));
        PointerCoords& coords = rawPointerCoords.back();
        if (coords.getAxisValue(AMOTION_EVENT_AXIS_ORIENTATION) != 0.f) {
            flags |= AMOTION_EVENT_PRIVATE_FLAG_SUPPORTS_ORIENTATION |
                    AMOTION_EVENT_PRIVATE_FLAG_SUPPORTS_DIRECTIONAL_ORIENTATION;
            flags |= MotionFlag::SUPPORTS_ORIENTATION;
            flags |= MotionFlag::SUPPORTS_DIRECTIONAL_ORIENTATION;
        }
        MotionEvent::calculateTransformedCoordsInPlace(coords, source, flags, inverseTransform);
        env->DeleteLocalRef(pointerCoordsObj);
@@ -697,15 +700,16 @@ static jboolean android_view_MotionEvent_nativeIsTouchEvent(
static jint android_view_MotionEvent_nativeGetFlags(CRITICAL_JNI_PARAMS_COMMA jlong nativePtr) {
    MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
    // Prevent private flags from being used in Java.
    return event->getFlags() & ~AMOTION_EVENT_PRIVATE_FLAG_MASK;
    return event->getFlags().get() & ~AMOTION_EVENT_PRIVATE_FLAG_MASK;
}

static void android_view_MotionEvent_nativeSetFlags(CRITICAL_JNI_PARAMS_COMMA jlong nativePtr,
                                                    jint flags) {
                                                    jint jFlags) {
    MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr);
    // Prevent private flags from being used from Java.
    const int32_t privateFlags = event->getFlags() & AMOTION_EVENT_PRIVATE_FLAG_MASK;
    event->setFlags((flags & ~AMOTION_EVENT_PRIVATE_FLAG_MASK) | privateFlags);
    const int32_t privateFlags = event->getFlags().get() & AMOTION_EVENT_PRIVATE_FLAG_MASK;
    uint32_t flags = (jFlags & ~AMOTION_EVENT_PRIVATE_FLAG_MASK) | privateFlags;
    event->setFlags(ftl::Flags<MotionFlag>(flags));
}

static jint android_view_MotionEvent_nativeGetEdgeFlags(CRITICAL_JNI_PARAMS_COMMA jlong nativePtr) {
+1 −1
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ jobject android_view_VerifiedMotionEvent(JNIEnv* env, const VerifiedMotionEvent&
    return env->NewObject(gVerifiedMotionEventClassInfo.clazz,
                          gVerifiedMotionEventClassInfo.constructor, event.deviceId,
                          event.eventTimeNanos, event.source, event.displayId, event.rawX,
                          event.rawY, event.actionMasked, event.downTimeNanos, event.flags,
                          event.rawY, event.actionMasked, event.downTimeNanos, event.flags.get(),
                          event.metaState, event.buttonState);
}

+1 −1
Original line number Diff line number Diff line
@@ -100,7 +100,7 @@ int32_t AMotionEvent_getAction(const AInputEvent* motion_event) {
}

int32_t AMotionEvent_getFlags(const AInputEvent* motion_event) {
    return static_cast<const MotionEvent*>(motion_event)->getFlags() &
    return static_cast<const MotionEvent*>(motion_event)->getFlags().get() &
            ~AMOTION_EVENT_PRIVATE_FLAG_MASK;
}