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

Commit 87112a7b authored by Prabir Pradhan's avatar Prabir Pradhan
Browse files

Notify dispatcher when its configuration needs to be updated

Bug: 278992287
Test: Presubmit
Change-Id: Ieb743ee37b818affb09baa420d2e75f0a694a2f0
parent 98447e45
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -676,7 +676,6 @@ InputDispatcher::InputDispatcher(const sp<InputDispatcherPolicyInterface>& polic
    SurfaceComposerClient::getDefault()->addWindowInfosListener(mWindowInfoListener);
#endif
    mKeyRepeatState.lastKeyEntry = nullptr;
    policy->getDispatcherConfiguration(&mConfig);
}

InputDispatcher::~InputDispatcher() {
@@ -6607,6 +6606,14 @@ void InputDispatcher::cancelCurrentTouch() {
    mLooper->wake();
}

void InputDispatcher::requestRefreshConfiguration() {
    InputDispatcherConfiguration config;
    mPolicy->getDispatcherConfiguration(&config);

    std::scoped_lock _l(mLock);
    mConfig = config;
}

void InputDispatcher::setMonitorDispatchingTimeoutForTest(std::chrono::nanoseconds timeout) {
    std::scoped_lock _l(mLock);
    mMonitorDispatchingTimeout = timeout;
+3 −1
Original line number Diff line number Diff line
@@ -149,6 +149,8 @@ public:

    void cancelCurrentTouch() override;

    void requestRefreshConfiguration() override;

    // Public to allow tests to verify that a Monitor can get ANR.
    void setMonitorDispatchingTimeoutForTest(std::chrono::nanoseconds timeout);

@@ -166,7 +168,7 @@ private:
    std::unique_ptr<InputThread> mThread;

    sp<InputDispatcherPolicyInterface> mPolicy;
    android::InputDispatcherConfiguration mConfig;
    android::InputDispatcherConfiguration mConfig GUARDED_BY(mLock);

    std::mutex mLock;

+6 −0
Original line number Diff line number Diff line
@@ -225,6 +225,12 @@ public:
     * Abort the current touch stream.
     */
    virtual void cancelCurrentTouch() = 0;

    /**
     * Request that the InputDispatcher's configuration, which can be obtained through the policy,
     * be updated.
     */
    virtual void requestRefreshConfiguration() = 0;
};

} // namespace android
+1 −0
Original line number Diff line number Diff line
@@ -5284,6 +5284,7 @@ protected:
        mFakePolicy = sp<FakeInputDispatcherPolicy>::make();
        mFakePolicy->setKeyRepeatConfiguration(KEY_REPEAT_TIMEOUT, KEY_REPEAT_DELAY);
        mDispatcher = std::make_unique<InputDispatcher>(mFakePolicy);
        mDispatcher->requestRefreshConfiguration();
        mDispatcher->setInputDispatchMode(/*enabled*/ true, /*frozen*/ false);
        ASSERT_EQ(OK, mDispatcher->start());