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

Commit 3e451bf9 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Use std::thread in input code" into main

parents f4f30dc2 31f9670f
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -45,9 +45,9 @@ AidlKeyEvent notifyKeyArgsToKeyEvent(const NotifyKeyArgs& args) {
}
}


InputFilter::InputFilter(InputListenerInterface& listener, IInputFlingerRust& rust,
InputFilter::InputFilter(InputListenerInterface& listener, IInputFlingerRust& rust,
                         InputFilterPolicyInterface& policy)
                         InputFilterPolicyInterface& policy, JNIEnv* env)
      : mNextListener(listener),
      : mNextListener(listener),
        mCallbacks(ndk::SharedRefBase::make<InputFilterCallbacks>(listener, policy)),
        mCallbacks(ndk::SharedRefBase::make<InputFilterCallbacks>(listener, policy, env)),
        mPolicy(policy) {
        mPolicy(policy) {
    LOG_ALWAYS_FATAL_IF(!rust.createInputFilter(mCallbacks, &mInputFilterRust).isOk());
    LOG_ALWAYS_FATAL_IF(!rust.createInputFilter(mCallbacks, &mInputFilterRust).isOk());
    LOG_ALWAYS_FATAL_IF(!mInputFilterRust);
    LOG_ALWAYS_FATAL_IF(!mInputFilterRust);
+1 −1
Original line number Original line Diff line number Diff line
@@ -50,7 +50,7 @@ public:
    using AidlDeviceInfo = aidl::com::android::server::inputflinger::DeviceInfo;
    using AidlDeviceInfo = aidl::com::android::server::inputflinger::DeviceInfo;


    explicit InputFilter(InputListenerInterface& listener, IInputFlingerRust& rust,
    explicit InputFilter(InputListenerInterface& listener, IInputFlingerRust& rust,
                         InputFilterPolicyInterface& policy);
                         InputFilterPolicyInterface& policy, JNIEnv* env);
    ~InputFilter() override = default;
    ~InputFilter() override = default;
    void notifyInputDevicesChanged(const NotifyInputDevicesChangedArgs& args) override;
    void notifyInputDevicesChanged(const NotifyInputDevicesChangedArgs& args) override;
    void notifyKey(const NotifyKeyArgs& args) override;
    void notifyKey(const NotifyKeyArgs& args) override;
+7 −5
Original line number Original line Diff line number Diff line
@@ -23,6 +23,7 @@
#include <utils/StrongPointer.h>
#include <utils/StrongPointer.h>
#include <functional>
#include <functional>
#include "InputThread.h"
#include "InputThread.h"
#include "jni.h"


namespace android {
namespace android {


@@ -41,11 +42,12 @@ using namespace aidl::com::android::server::inputflinger;


class InputFilterThread : public BnInputThread {
class InputFilterThread : public BnInputThread {
public:
public:
    InputFilterThread(std::shared_ptr<IInputThreadCallback> callback) : mCallback(callback) {
    InputFilterThread(std::shared_ptr<IInputThreadCallback> callback, JNIEnv* env)
          : mCallback(callback) {
        mLooper = sp<Looper>::make(/*allowNonCallbacks=*/false);
        mLooper = sp<Looper>::make(/*allowNonCallbacks=*/false);
        mThread = std::make_unique<InputThread>(
        mThread = std::make_unique<InputThread>(
                "InputFilter", [this]() { loopOnce(); }, [this]() { mLooper->wake(); },
                "InputFilter", [this]() { loopOnce(); }, [this]() { mLooper->wake(); },
                /*isInCriticalPath=*/false);
                /*isInCriticalPath=*/false, env);
    }
    }


    ndk::ScopedAStatus finish() override {
    ndk::ScopedAStatus finish() override {
@@ -79,8 +81,8 @@ private:
} // namespace
} // namespace


InputFilterCallbacks::InputFilterCallbacks(InputListenerInterface& listener,
InputFilterCallbacks::InputFilterCallbacks(InputListenerInterface& listener,
                                           InputFilterPolicyInterface& policy)
                                           InputFilterPolicyInterface& policy, JNIEnv* env)
      : mNextListener(listener), mPolicy(policy) {}
      : mNextListener(listener), mPolicy(policy), mJniEnv(env) {}


ndk::ScopedAStatus InputFilterCallbacks::sendKeyEvent(const AidlKeyEvent& event) {
ndk::ScopedAStatus InputFilterCallbacks::sendKeyEvent(const AidlKeyEvent& event) {
    mNextListener.notifyKey(keyEventToNotifyKeyArgs(event));
    mNextListener.notifyKey(keyEventToNotifyKeyArgs(event));
@@ -101,7 +103,7 @@ ndk::ScopedAStatus InputFilterCallbacks::onModifierStateChanged(int32_t modifier
ndk::ScopedAStatus InputFilterCallbacks::createInputFilterThread(
ndk::ScopedAStatus InputFilterCallbacks::createInputFilterThread(
        const std::shared_ptr<IInputThreadCallback>& callback,
        const std::shared_ptr<IInputThreadCallback>& callback,
        std::shared_ptr<IInputThread>* aidl_return) {
        std::shared_ptr<IInputThread>* aidl_return) {
    *aidl_return = ndk::SharedRefBase::make<InputFilterThread>(callback);
    *aidl_return = ndk::SharedRefBase::make<InputFilterThread>(callback, mJniEnv);
    return ndk::ScopedAStatus::ok();
    return ndk::ScopedAStatus::ok();
}
}


+2 −1
Original line number Original line Diff line number Diff line
@@ -39,7 +39,7 @@ using IInputThreadCallback =
class InputFilterCallbacks : public IInputFilter::BnInputFilterCallbacks {
class InputFilterCallbacks : public IInputFilter::BnInputFilterCallbacks {
public:
public:
    explicit InputFilterCallbacks(InputListenerInterface& listener,
    explicit InputFilterCallbacks(InputListenerInterface& listener,
                                  InputFilterPolicyInterface& policy);
                                  InputFilterPolicyInterface& policy, JNIEnv* env);
    ~InputFilterCallbacks() override = default;
    ~InputFilterCallbacks() override = default;


    uint32_t getModifierState();
    uint32_t getModifierState();
@@ -48,6 +48,7 @@ public:
private:
private:
    InputListenerInterface& mNextListener;
    InputListenerInterface& mNextListener;
    InputFilterPolicyInterface& mPolicy;
    InputFilterPolicyInterface& mPolicy;
    JNIEnv* mJniEnv;
    mutable std::mutex mLock;
    mutable std::mutex mLock;
    struct StickyModifierState {
    struct StickyModifierState {
        uint32_t modifierState;
        uint32_t modifierState;
+4 −4
Original line number Original line Diff line number Diff line
@@ -125,15 +125,15 @@ std::shared_ptr<IInputFlingerRust> createInputFlingerRust() {
InputManager::InputManager(const sp<InputReaderPolicyInterface>& readerPolicy,
InputManager::InputManager(const sp<InputReaderPolicyInterface>& readerPolicy,
                           InputDispatcherPolicyInterface& dispatcherPolicy,
                           InputDispatcherPolicyInterface& dispatcherPolicy,
                           PointerChoreographerPolicyInterface& choreographerPolicy,
                           PointerChoreographerPolicyInterface& choreographerPolicy,
                           InputFilterPolicyInterface& inputFilterPolicy) {
                           InputFilterPolicyInterface& inputFilterPolicy, JNIEnv* env) {
    mInputFlingerRust = createInputFlingerRust();
    mInputFlingerRust = createInputFlingerRust();


    mDispatcher = createInputDispatcher(dispatcherPolicy);
    mDispatcher = createInputDispatcher(dispatcherPolicy, env);
    mTracingStages.emplace_back(
    mTracingStages.emplace_back(
            std::make_unique<TracedInputListener>("InputDispatcher", *mDispatcher));
            std::make_unique<TracedInputListener>("InputDispatcher", *mDispatcher));


    mInputFilter = std::make_unique<InputFilter>(*mTracingStages.back(), *mInputFlingerRust,
    mInputFilter = std::make_unique<InputFilter>(*mTracingStages.back(), *mInputFlingerRust,
                                                 inputFilterPolicy);
                                                 inputFilterPolicy, env);
    mTracingStages.emplace_back(
    mTracingStages.emplace_back(
            std::make_unique<TracedInputListener>("InputFilter", *mInputFilter));
            std::make_unique<TracedInputListener>("InputFilter", *mInputFilter));


@@ -156,7 +156,7 @@ InputManager::InputManager(const sp<InputReaderPolicyInterface>& readerPolicy,
    mTracingStages.emplace_back(
    mTracingStages.emplace_back(
            std::make_unique<TracedInputListener>("UnwantedInteractionBlocker", *mBlocker));
            std::make_unique<TracedInputListener>("UnwantedInteractionBlocker", *mBlocker));


    mReader = createInputReader(readerPolicy, *mTracingStages.back());
    mReader = createInputReader(readerPolicy, *mTracingStages.back(), env);
}
}


InputManager::~InputManager() {
InputManager::~InputManager() {
Loading