From 2935db7177bf6ddee879883da5b0a07846f44391 Mon Sep 17 00:00:00 2001 From: Siarhei Vishniakou Date: Thu, 22 Sep 2022 13:35:22 -0700 Subject: Return events from mappers and InputDevice We are changing the way android input events are reported from the InputReader. Previously, the process was opaque - anywhere in the code you were allowed to grab the listener and send events to it. Now, the flow changes - you will have to explicitly return the events back to the caller. With the new approach, InputReader will ultimately be the one dispatching the events to the listener. Bug: 211379801 Test: atest inputflinger_tests Change-Id: I2318ad1220fa66b197ca2a49b8625afcfb45103f --- services/inputflinger/NotifyArgs.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'services/inputflinger/NotifyArgs.cpp') diff --git a/services/inputflinger/NotifyArgs.cpp b/services/inputflinger/NotifyArgs.cpp index 1f37774218..b192ad73c3 100644 --- a/services/inputflinger/NotifyArgs.cpp +++ b/services/inputflinger/NotifyArgs.cpp @@ -225,4 +225,27 @@ NotifyPointerCaptureChangedArgs::NotifyPointerCaptureChangedArgs( int32_t id, nsecs_t eventTime, const PointerCaptureRequest& request) : id(id), eventTime(eventTime), request(request) {} +// Helper to std::visit with lambdas. +template +struct Visitor : V... {}; +// explicit deduction guide (not needed as of C++20) +template +Visitor(V...) -> Visitor; + +const char* toString(const NotifyArgs& args) { + Visitor toStringVisitor{ + [&](const NotifyConfigurationChangedArgs&) { return "NotifyConfigurationChangedArgs"; }, + [&](const NotifyKeyArgs&) { return "NotifyKeyArgs"; }, + [&](const NotifyMotionArgs&) { return "NotifyMotionArgs"; }, + [&](const NotifySensorArgs&) { return "NotifySensorArgs"; }, + [&](const NotifySwitchArgs&) { return "NotifySwitchArgs"; }, + [&](const NotifyDeviceResetArgs&) { return "NotifyDeviceResetArgs"; }, + [&](const NotifyPointerCaptureChangedArgs&) { + return "NotifyPointerCaptureChangedArgs"; + }, + [&](const NotifyVibratorStateArgs&) { return "NotifyVibratorStateArgs"; }, + }; + return std::visit(toStringVisitor, args); +} + } // namespace android -- cgit v1.2.3-59-g8ed1b