Loading include/input/InputConsumerNoResampling.h +12 −1 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ #pragma once #include <input/InputTransport.h> #include <input/LooperInterface.h> #include <input/Resampler.h> #include <utils/Looper.h> Loading Loading @@ -65,6 +66,16 @@ public: */ class InputConsumerNoResampling final { public: /** * This constructor is exclusively for test code. Any real use of InputConsumerNoResampling must * use the constructor that takes an sp<Looper> parameter instead of * std::shared_ptr<LooperInterface>. */ explicit InputConsumerNoResampling(const std::shared_ptr<InputChannel>& channel, std::shared_ptr<LooperInterface> looper, InputConsumerCallbacks& callbacks, std::unique_ptr<Resampler> resampler); /** * @param callbacks are used to interact with InputConsumerNoResampling. They're called whenever * the event is ready to consume. Loading Loading @@ -108,7 +119,7 @@ public: private: std::shared_ptr<InputChannel> mChannel; sp<Looper> mLooper; std::shared_ptr<LooperInterface> mLooper; InputConsumerCallbacks& mCallbacks; std::unique_ptr<Resampler> mResampler; Loading include/input/InputDevice.h +1 −0 Original line number Diff line number Diff line Loading @@ -389,6 +389,7 @@ enum class InputDeviceConfigurationFileType : int32_t { CONFIGURATION = 0, /* .idc file */ KEY_LAYOUT = 1, /* .kl file */ KEY_CHARACTER_MAP = 2, /* .kcm file */ ftl_last = KEY_CHARACTER_MAP, }; /* Loading include/input/InputTransport.h +6 −5 Original line number Diff line number Diff line Loading @@ -263,7 +263,7 @@ public: * Return DEAD_OBJECT if the channel's peer has been closed. * Other errors probably indicate that the channel is broken. */ status_t sendMessage(const InputMessage* msg); virtual status_t sendMessage(const InputMessage* msg); /* Receive a message sent by the other endpoint. * Loading @@ -275,14 +275,14 @@ public: * Return DEAD_OBJECT if the channel's peer has been closed. * Other errors probably indicate that the channel is broken. */ android::base::Result<InputMessage> receiveMessage(); virtual android::base::Result<InputMessage> receiveMessage(); /* Tells whether there is a message in the channel available to be received. * * This is only a performance hint and may return false negative results. Clients should not * rely on availability of the message based on the return value. */ bool probablyHasInput() const; virtual bool probablyHasInput() const; /* Wait until there is a message in the channel. * Loading Loading @@ -323,11 +323,12 @@ public: */ sp<IBinder> getConnectionToken() const; protected: InputChannel(const std::string name, android::base::unique_fd fd, sp<IBinder> token); private: static std::unique_ptr<InputChannel> create(const std::string& name, android::base::unique_fd fd, sp<IBinder> token); InputChannel(const std::string name, android::base::unique_fd fd, sp<IBinder> token); }; /* Loading include/input/LooperInterface.h 0 → 100644 +39 −0 Original line number Diff line number Diff line /** * Copyright 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #pragma once #include <utils/Looper.h> #include <utils/StrongPointer.h> namespace android { /** * LooperInterface allows the use of TestLooper in InputConsumerNoResampling without reassigning to * Looper. LooperInterface is needed to control how InputConsumerNoResampling consumes and batches * InputMessages. */ class LooperInterface { public: virtual ~LooperInterface() = default; virtual int addFd(int fd, int ident, int events, const sp<LooperCallback>& callback, void* data) = 0; virtual int removeFd(int fd) = 0; virtual sp<Looper> getLooper() const = 0; }; } // namespace android include/private/performance_hint_private.h +4 −0 Original line number Diff line number Diff line Loading @@ -108,6 +108,10 @@ APerformanceHintSession* APerformanceHint_createSessionInternal(APerformanceHint const int32_t* threadIds, size_t size, int64_t initialTargetWorkDurationNanos, SessionTag tag); /** * Forces FMQ to be enabled or disabled, for testing only. */ void APerformanceHint_setUseFMQForTesting(bool enabled); __END_DECLS Loading Loading
include/input/InputConsumerNoResampling.h +12 −1 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ #pragma once #include <input/InputTransport.h> #include <input/LooperInterface.h> #include <input/Resampler.h> #include <utils/Looper.h> Loading Loading @@ -65,6 +66,16 @@ public: */ class InputConsumerNoResampling final { public: /** * This constructor is exclusively for test code. Any real use of InputConsumerNoResampling must * use the constructor that takes an sp<Looper> parameter instead of * std::shared_ptr<LooperInterface>. */ explicit InputConsumerNoResampling(const std::shared_ptr<InputChannel>& channel, std::shared_ptr<LooperInterface> looper, InputConsumerCallbacks& callbacks, std::unique_ptr<Resampler> resampler); /** * @param callbacks are used to interact with InputConsumerNoResampling. They're called whenever * the event is ready to consume. Loading Loading @@ -108,7 +119,7 @@ public: private: std::shared_ptr<InputChannel> mChannel; sp<Looper> mLooper; std::shared_ptr<LooperInterface> mLooper; InputConsumerCallbacks& mCallbacks; std::unique_ptr<Resampler> mResampler; Loading
include/input/InputDevice.h +1 −0 Original line number Diff line number Diff line Loading @@ -389,6 +389,7 @@ enum class InputDeviceConfigurationFileType : int32_t { CONFIGURATION = 0, /* .idc file */ KEY_LAYOUT = 1, /* .kl file */ KEY_CHARACTER_MAP = 2, /* .kcm file */ ftl_last = KEY_CHARACTER_MAP, }; /* Loading
include/input/InputTransport.h +6 −5 Original line number Diff line number Diff line Loading @@ -263,7 +263,7 @@ public: * Return DEAD_OBJECT if the channel's peer has been closed. * Other errors probably indicate that the channel is broken. */ status_t sendMessage(const InputMessage* msg); virtual status_t sendMessage(const InputMessage* msg); /* Receive a message sent by the other endpoint. * Loading @@ -275,14 +275,14 @@ public: * Return DEAD_OBJECT if the channel's peer has been closed. * Other errors probably indicate that the channel is broken. */ android::base::Result<InputMessage> receiveMessage(); virtual android::base::Result<InputMessage> receiveMessage(); /* Tells whether there is a message in the channel available to be received. * * This is only a performance hint and may return false negative results. Clients should not * rely on availability of the message based on the return value. */ bool probablyHasInput() const; virtual bool probablyHasInput() const; /* Wait until there is a message in the channel. * Loading Loading @@ -323,11 +323,12 @@ public: */ sp<IBinder> getConnectionToken() const; protected: InputChannel(const std::string name, android::base::unique_fd fd, sp<IBinder> token); private: static std::unique_ptr<InputChannel> create(const std::string& name, android::base::unique_fd fd, sp<IBinder> token); InputChannel(const std::string name, android::base::unique_fd fd, sp<IBinder> token); }; /* Loading
include/input/LooperInterface.h 0 → 100644 +39 −0 Original line number Diff line number Diff line /** * Copyright 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #pragma once #include <utils/Looper.h> #include <utils/StrongPointer.h> namespace android { /** * LooperInterface allows the use of TestLooper in InputConsumerNoResampling without reassigning to * Looper. LooperInterface is needed to control how InputConsumerNoResampling consumes and batches * InputMessages. */ class LooperInterface { public: virtual ~LooperInterface() = default; virtual int addFd(int fd, int ident, int events, const sp<LooperCallback>& callback, void* data) = 0; virtual int removeFd(int fd) = 0; virtual sp<Looper> getLooper() const = 0; }; } // namespace android
include/private/performance_hint_private.h +4 −0 Original line number Diff line number Diff line Loading @@ -108,6 +108,10 @@ APerformanceHintSession* APerformanceHint_createSessionInternal(APerformanceHint const int32_t* threadIds, size_t size, int64_t initialTargetWorkDurationNanos, SessionTag tag); /** * Forces FMQ to be enabled or disabled, for testing only. */ void APerformanceHint_setUseFMQForTesting(bool enabled); __END_DECLS Loading