Only prioritize critical input threads
Input has several threads:
InputReader
InputClassifier (InputProcessor)
InputDispatcher
InputFilter
TraceProcessor
However, only two of them are in the critical path of the event
dispatch, and therefore, should be prioritized.
The others do not need to run with high priority.
In this CL, require that all InputThread's declare themselves as
critical or not, which would allow us to set their priority
appropriately.
Bug: 330719044
Test: perfetto trace
Flag: EXEMPT bugfix
Change-Id: Iaa7d7ed32557e1617884590562c3474b17d3a7f9
diff --git a/services/inputflinger/InputThread.cpp b/services/inputflinger/InputThread.cpp
index 449eb45..bd4b192 100644
--- a/services/inputflinger/InputThread.cpp
+++ b/services/inputflinger/InputThread.cpp
@@ -45,11 +45,12 @@
} // namespace
-InputThread::InputThread(std::string name, std::function<void()> loop, std::function<void()> wake)
+InputThread::InputThread(std::string name, std::function<void()> loop, std::function<void()> wake,
+ bool isInCriticalPath)
: mName(name), mThreadWake(wake) {
mThread = sp<InputThreadImpl>::make(loop);
mThread->run(mName.c_str(), ANDROID_PRIORITY_URGENT_DISPLAY);
- if (input_flags::enable_input_policy_profile()) {
+ if (input_flags::enable_input_policy_profile() && isInCriticalPath) {
if (!applyInputEventProfile()) {
LOG(ERROR) << "Couldn't apply input policy profile for " << name;
}
@@ -84,4 +85,4 @@
#endif
}
-} // namespace android
\ No newline at end of file
+} // namespace android