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

Commit 5bea2cc7 authored by Xin Li's avatar Xin Li
Browse files

Merge Android 12 QPR1

Bug: 210511427
Merged-In: I67a05a55a122341a7c33d3eefdcc436d94e29a15
Change-Id: Ib21e05a2d01084f40234db0b6a67b37c26f29306
parents 3183b5c2 af5fc3ca
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -947,9 +947,10 @@ int32_t AInputEvent_getSource(const AInputEvent* event);
 * and {@link AMotionEvent_fromJava()}.
 * After returning, the specified AInputEvent* object becomes invalid and should no longer be used.
 * The underlying Java object remains valid and does not change its state.
 *
 * Available since API level 31.
 */

void AInputEvent_release(const AInputEvent* event);
void AInputEvent_release(const AInputEvent* event) __INTRODUCED_IN(31);

/*** Accessors for key events only. ***/

@@ -1001,8 +1002,10 @@ int64_t AKeyEvent_getEventTime(const AInputEvent* key_event);
 * Creates a native AInputEvent* object that is a copy of the specified Java android.view.KeyEvent.
 * The result may be used with generic and KeyEvent-specific AInputEvent_* functions. The object
 * returned by this function must be disposed using {@link AInputEvent_release()}.
 *
 * Available since API level 31.
 */
const AInputEvent* AKeyEvent_fromJava(JNIEnv* env, jobject keyEvent);
const AInputEvent* AKeyEvent_fromJava(JNIEnv* env, jobject keyEvent) __INTRODUCED_IN(31);

/*** Accessors for motion events only. ***/

@@ -1324,8 +1327,10 @@ float AMotionEvent_getHistoricalAxisValue(const AInputEvent* motion_event,
 * android.view.MotionEvent. The result may be used with generic and MotionEvent-specific
 * AInputEvent_* functions. The object returned by this function must be disposed using
 * {@link AInputEvent_release()}.
 *
 * Available since API level 31.
 */
const AInputEvent* AMotionEvent_fromJava(JNIEnv* env, jobject motionEvent);
const AInputEvent* AMotionEvent_fromJava(JNIEnv* env, jobject motionEvent) __INTRODUCED_IN(31);

struct AInputQueue;
/**
+19 −0
Original line number Diff line number Diff line
@@ -1015,6 +1015,25 @@ private:
    std::queue<std::unique_ptr<DragEvent>> mDragEventPool;
};

/*
 * Describes a unique request to enable or disable Pointer Capture.
 */
struct PointerCaptureRequest {
public:
    inline PointerCaptureRequest() : enable(false), seq(0) {}
    inline PointerCaptureRequest(bool enable, uint32_t seq) : enable(enable), seq(seq) {}
    inline bool operator==(const PointerCaptureRequest& other) const {
        return enable == other.enable && seq == other.seq;
    }
    explicit inline operator bool() const { return enable; }

    // True iff this is a request to enable Pointer Capture.
    bool enable;

    // The sequence number for the request.
    uint32_t seq;
};

} // namespace android

#endif // _LIBINPUT_INPUT_H
+0 −18
Original line number Diff line number Diff line
@@ -1410,23 +1410,6 @@ void IPCThreadState::threadDestructor(void *st)
        }
}

status_t IPCThreadState::getProcessFreezeInfo(pid_t pid, bool *sync_received, bool *async_received)
{
    int ret = 0;
    binder_frozen_status_info info;
    info.pid = pid;

#if defined(__ANDROID__)
    if (ioctl(self()->mProcess->mDriverFD, BINDER_GET_FROZEN_INFO, &info) < 0)
        ret = -errno;
#endif
    *sync_received = info.sync_recv;
    *async_received = info.async_recv;

    return ret;
}

#ifndef __ANDROID_VNDK__
status_t IPCThreadState::getProcessFreezeInfo(pid_t pid, uint32_t *sync_received,
                                              uint32_t *async_received)
{
@@ -1443,7 +1426,6 @@ status_t IPCThreadState::getProcessFreezeInfo(pid_t pid, uint32_t *sync_received

    return ret;
}
#endif

status_t IPCThreadState::freeze(pid_t pid, bool enable, uint32_t timeout_ms) {
    struct binder_freeze_info info;
+1 −7
Original line number Diff line number Diff line
@@ -51,14 +51,8 @@ public:
    static  status_t            freeze(pid_t pid, bool enabled, uint32_t timeout_ms);

    // Provide information about the state of a frozen process
    static  status_t            getProcessFreezeInfo(pid_t pid, bool *sync_received,
                                                    bool *async_received);

    // TODO: Remove the above legacy duplicated function in next version
#ifndef __ANDROID_VNDK__
    static  status_t            getProcessFreezeInfo(pid_t pid, uint32_t *sync_received,
                                                    uint32_t *async_received);
#endif

            sp<ProcessState>    process();

+2 −10
Original line number Diff line number Diff line
@@ -496,7 +496,7 @@ TEST_F(BinderLibTest, Freeze) {
    EXPECT_EQ(NO_ERROR, IPCThreadState::self()->freeze(pid, true, 1000));
    EXPECT_EQ(FAILED_TRANSACTION, m_server->transact(BINDER_LIB_TEST_NOP_TRANSACTION, data, &reply));

    bool sync_received, async_received;
    uint32_t sync_received, async_received;

    EXPECT_EQ(NO_ERROR, IPCThreadState::self()->getProcessFreezeInfo(pid, &sync_received,
                &async_received));
@@ -504,15 +504,7 @@ TEST_F(BinderLibTest, Freeze) {
    EXPECT_EQ(sync_received, 1);
    EXPECT_EQ(async_received, 0);

    uint32_t sync_received2, async_received2;

    EXPECT_EQ(NO_ERROR, IPCThreadState::self()->getProcessFreezeInfo(pid, &sync_received2,
                &async_received2));

    EXPECT_EQ(sync_received2, 1);
    EXPECT_EQ(async_received2, 0);

    EXPECT_EQ(NO_ERROR, IPCThreadState::self()->freeze(pid, 0, 0));
    EXPECT_EQ(NO_ERROR, IPCThreadState::self()->freeze(pid, false, 0));
    EXPECT_EQ(NO_ERROR, m_server->transact(BINDER_LIB_TEST_NOP_TRANSACTION, data, &reply));
}

Loading