Consume video frames
An input device currently reads video frames, and stores them into local
queue. We limit the queue size to 10 frames.
Here, we add the step where an input mapper would consume the video
frames from the video device for a given input device, and then pass
them onto the input listener.
Test: integration tested by checking that frames are processed correctly
in input hal. To check if frames are processed correctly, look at the
active touch area and print a log message when the total area exceeds a
certain threshold.
Bug: 111480215
Change-Id: Ifc519389e12b44540e9a54fd273241f9f7cd057d
diff --git a/services/inputflinger/InputReader.cpp b/services/inputflinger/InputReader.cpp
index 73fcb11..3d5f1d9 100644
--- a/services/inputflinger/InputReader.cpp
+++ b/services/inputflinger/InputReader.cpp
@@ -6483,11 +6483,13 @@
}
}
- NotifyMotionArgs args(mContext->getNextSequenceNum(), when, getDeviceId(),
+ const int32_t deviceId = getDeviceId();
+ std::vector<TouchVideoFrame> frames = mDevice->getEventHub()->getVideoFrames(deviceId);
+ NotifyMotionArgs args(mContext->getNextSequenceNum(), when, deviceId,
source, mViewport.displayId, policyFlags,
action, actionButton, flags, metaState, buttonState, edgeFlags,
deviceTimestamp, pointerCount, pointerProperties, pointerCoords,
- xPrecision, yPrecision, downTime, /* videoFrames */ {});
+ xPrecision, yPrecision, downTime, std::move(frames));
getListener()->notifyMotion(&args);
}