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

Commit 3c248d8c authored by Vaibhav Devmurari's avatar Vaibhav Devmurari
Browse files

Bounce keys doesnt work for already connected keyboards

Test: manual
Bug: 294546335
Change-Id: Ie9db44d9203763c3743c63d5e27be98d45127faf
parent 93144689
Loading
Loading
Loading
Loading
+18 −11
Original line number Original line Diff line number Diff line
@@ -52,15 +52,15 @@ InputFilter::InputFilter(InputListenerInterface& listener, IInputFlingerRust& ru
}
}


void InputFilter::notifyInputDevicesChanged(const NotifyInputDevicesChangedArgs& args) {
void InputFilter::notifyInputDevicesChanged(const NotifyInputDevicesChangedArgs& args) {
    if (isFilterEnabled()) {
    mDeviceInfos.clear();
        std::vector<AidlDeviceInfo> deviceInfos;
    mDeviceInfos.reserve(args.inputDeviceInfos.size());
    for (auto info : args.inputDeviceInfos) {
    for (auto info : args.inputDeviceInfos) {
            AidlDeviceInfo aidlInfo;
        AidlDeviceInfo& aidlInfo = mDeviceInfos.emplace_back();
        aidlInfo.deviceId = info.getId();
        aidlInfo.deviceId = info.getId();
        aidlInfo.external = info.isExternal();
        aidlInfo.external = info.isExternal();
            deviceInfos.push_back(aidlInfo);
    }
    }
        LOG_ALWAYS_FATAL_IF(!mInputFilterRust->notifyInputDevicesChanged(deviceInfos).isOk());
    if (isFilterEnabled()) {
        LOG_ALWAYS_FATAL_IF(!mInputFilterRust->notifyInputDevicesChanged(mDeviceInfos).isOk());
    }
    }
    mNextListener.notify(args);
    mNextListener.notify(args);
}
}
@@ -74,7 +74,7 @@ void InputFilter::notifyKey(const NotifyKeyArgs& args) {
        LOG_ALWAYS_FATAL_IF(!mInputFilterRust->notifyKey(notifyKeyArgsToKeyEvent(args)).isOk());
        LOG_ALWAYS_FATAL_IF(!mInputFilterRust->notifyKey(notifyKeyArgsToKeyEvent(args)).isOk());
        return;
        return;
    }
    }
    mNextListener.notifyKey(args);
    mNextListener.notify(args);
}
}


void InputFilter::notifyMotion(const NotifyMotionArgs& args) {
void InputFilter::notifyMotion(const NotifyMotionArgs& args) {
@@ -112,7 +112,7 @@ void InputFilter::setAccessibilityBounceKeysThreshold(nsecs_t threshold) {


    if (mConfig.bounceKeysThresholdNs != threshold) {
    if (mConfig.bounceKeysThresholdNs != threshold) {
        mConfig.bounceKeysThresholdNs = threshold;
        mConfig.bounceKeysThresholdNs = threshold;
        LOG_ALWAYS_FATAL_IF(!mInputFilterRust->notifyConfigurationChanged(mConfig).isOk());
        notifyConfigurationChangedLocked();
    }
    }
}
}


@@ -121,7 +121,14 @@ void InputFilter::setAccessibilityStickyKeysEnabled(bool enabled) {


    if (mConfig.stickyKeysEnabled != enabled) {
    if (mConfig.stickyKeysEnabled != enabled) {
        mConfig.stickyKeysEnabled = enabled;
        mConfig.stickyKeysEnabled = enabled;
        notifyConfigurationChangedLocked();
    }
}

void InputFilter::notifyConfigurationChangedLocked() {
    LOG_ALWAYS_FATAL_IF(!mInputFilterRust->notifyConfigurationChanged(mConfig).isOk());
    LOG_ALWAYS_FATAL_IF(!mInputFilterRust->notifyConfigurationChanged(mConfig).isOk());
    if (isFilterEnabled()) {
        LOG_ALWAYS_FATAL_IF(!mInputFilterRust->notifyInputDevicesChanged(mDeviceInfos).isOk());
    }
    }
}
}


+5 −0
Original line number Original line Diff line number Diff line
@@ -45,6 +45,7 @@ public:
            aidl::com::android::server::inputflinger::IInputFilter::IInputFilterCallbacks;
            aidl::com::android::server::inputflinger::IInputFilter::IInputFilterCallbacks;
    using InputFilterConfiguration =
    using InputFilterConfiguration =
            aidl::com::android::server::inputflinger::InputFilterConfiguration;
            aidl::com::android::server::inputflinger::InputFilterConfiguration;
    using AidlDeviceInfo = aidl::com::android::server::inputflinger::DeviceInfo;


    explicit InputFilter(InputListenerInterface& listener, IInputFlingerRust&);
    explicit InputFilter(InputListenerInterface& listener, IInputFlingerRust&);
    ~InputFilter() override = default;
    ~InputFilter() override = default;
@@ -65,10 +66,14 @@ private:
    InputListenerInterface& mNextListener;
    InputListenerInterface& mNextListener;
    std::shared_ptr<InputFilterCallbacks> mCallbacks;
    std::shared_ptr<InputFilterCallbacks> mCallbacks;
    std::shared_ptr<IInputFilter> mInputFilterRust;
    std::shared_ptr<IInputFilter> mInputFilterRust;
    // Keep track of connected peripherals, so that if filters are enabled later, we can pass that
    // info to the filters
    std::vector<AidlDeviceInfo> mDeviceInfos;
    mutable std::mutex mLock;
    mutable std::mutex mLock;
    InputFilterConfiguration mConfig GUARDED_BY(mLock);
    InputFilterConfiguration mConfig GUARDED_BY(mLock);


    bool isFilterEnabled();
    bool isFilterEnabled();
    void notifyConfigurationChangedLocked() REQUIRES(mLock);
};
};


} // namespace android
} // namespace android