@@ -357,7 +357,8 @@ void InputConsumerNoResampling::handleMessages(std::vector<InputMessage>&& messa
357357 mBatches [deviceId].emplace (msg);
358358 } else {
359359 // consume all pending batches for this device immediately
360- consumeBatchedInputEvents (deviceId, /* requestedFrameTime=*/ std::nullopt );
360+ consumeBatchedInputEvents (deviceId, /* requestedFrameTime=*/
361+ std::numeric_limits<nsecs_t >::max ());
361362 if (canResample &&
362363 (action == AMOTION_EVENT_ACTION_UP || action == AMOTION_EVENT_ACTION_CANCEL)) {
363364 LOG_IF (INFO, mResamplers .erase (deviceId) == 0 )
@@ -480,7 +481,7 @@ void InputConsumerNoResampling::handleMessage(const InputMessage& msg) const {
480481}
481482
482483std::pair<std::unique_ptr<MotionEvent>, std::optional<uint32_t >>
483- InputConsumerNoResampling::createBatchedMotionEvent (const nsecs_t requestedFrameTime,
484+ InputConsumerNoResampling::createBatchedMotionEvent (const std::optional< nsecs_t > requestedFrameTime,
484485 std::queue<InputMessage>& messages) {
485486 std::unique_ptr<MotionEvent> motionEvent;
486487 std::optional<uint32_t > firstSeqForBatch;
@@ -491,7 +492,11 @@ InputConsumerNoResampling::createBatchedMotionEvent(const nsecs_t requestedFrame
491492 const nanoseconds resampleLatency = (resampler != mResamplers .cend ())
492493 ? resampler->second ->getResampleLatency ()
493494 : nanoseconds{0 };
494- const nanoseconds adjustedFrameTime = nanoseconds{requestedFrameTime} - resampleLatency;
495+ // When batching is not enabled, we want to consume all events. That's equivalent to having an
496+ // infinite requestedFrameTime.
497+ const nanoseconds adjustedFrameTime = (requestedFrameTime.has_value ())
498+ ? (nanoseconds{*requestedFrameTime} - resampleLatency)
499+ : nanoseconds{std::numeric_limits<nsecs_t >::max ()};
495500
496501 while (!messages.empty () &&
497502 (messages.front ().body .motion .eventTime <= adjustedFrameTime.count ())) {
@@ -513,8 +518,9 @@ InputConsumerNoResampling::createBatchedMotionEvent(const nsecs_t requestedFrame
513518 if (!messages.empty ()) {
514519 futureSample = &messages.front ();
515520 }
516- if ((motionEvent != nullptr ) && (resampler != mResamplers .cend ())) {
517- resampler->second ->resampleMotionEvent (nanoseconds{requestedFrameTime}, *motionEvent,
521+ if ((motionEvent != nullptr ) && (resampler != mResamplers .cend ()) &&
522+ (requestedFrameTime.has_value ())) {
523+ resampler->second ->resampleMotionEvent (nanoseconds{*requestedFrameTime}, *motionEvent,
518524 futureSample);
519525 }
520526
@@ -524,16 +530,13 @@ InputConsumerNoResampling::createBatchedMotionEvent(const nsecs_t requestedFrame
524530bool InputConsumerNoResampling::consumeBatchedInputEvents (
525531 std::optional<DeviceId> deviceId, std::optional<nsecs_t > requestedFrameTime) {
526532 ensureCalledOnLooperThread (__func__);
527- // When batching is not enabled, we want to consume all events. That's equivalent to having an
528- // infinite requestedFrameTime.
529- requestedFrameTime = requestedFrameTime.value_or (std::numeric_limits<nsecs_t >::max ());
530533 bool producedEvents = false ;
531534
532535 for (auto deviceIdIter = (deviceId.has_value ()) ? (mBatches .find (*deviceId))
533536 : (mBatches .begin ());
534537 deviceIdIter != mBatches .cend (); ++deviceIdIter) {
535538 std::queue<InputMessage>& messages = deviceIdIter->second ;
536- auto [motion, firstSeqForBatch] = createBatchedMotionEvent (* requestedFrameTime, messages);
539+ auto [motion, firstSeqForBatch] = createBatchedMotionEvent (requestedFrameTime, messages);
537540 if (motion != nullptr ) {
538541 LOG_ALWAYS_FATAL_IF (!firstSeqForBatch.has_value ());
539542 mCallbacks .onMotionEvent (std::move (motion), *firstSeqForBatch);
0 commit comments