From f26db0d6c55ff572f8772498c5d845ade7c6e8b8 Mon Sep 17 00:00:00 2001 From: Jeff Brown Date: Fri, 16 Jul 2010 17:21:06 -0700 Subject: [PATCH] Fix trackball down and movement bugs. Bug: 2823788 Change-Id: Icb0c392b58f7e735614460b5eb87439cb73ac4f2 --- libs/ui/InputDispatcher.cpp | 12 +++++++++++- libs/ui/InputReader.cpp | 4 ++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/libs/ui/InputDispatcher.cpp b/libs/ui/InputDispatcher.cpp index a438c6926..a55864be1 100644 --- a/libs/ui/InputDispatcher.cpp +++ b/libs/ui/InputDispatcher.cpp @@ -650,10 +650,20 @@ void InputDispatcher::startDispatchCycleLocked(nsecs_t currentTime, firstMotionSample = & motionEntry->firstSample; } + // Set the X and Y offset depending on the input source. + float xOffset, yOffset; + if (motionEntry->source & AINPUT_SOURCE_CLASS_POINTER) { + xOffset = dispatchEntry->xOffset; + yOffset = dispatchEntry->yOffset; + } else { + xOffset = 0.0f; + yOffset = 0.0f; + } + // Publish the motion event and the first motion sample. status = connection->inputPublisher.publishMotionEvent(motionEntry->deviceId, motionEntry->source, action, motionEntry->edgeFlags, motionEntry->metaState, - dispatchEntry->xOffset, dispatchEntry->yOffset, + xOffset, yOffset, motionEntry->xPrecision, motionEntry->yPrecision, motionEntry->downTime, firstMotionSample->eventTime, motionEntry->pointerCount, motionEntry->pointerIds, diff --git a/libs/ui/InputReader.cpp b/libs/ui/InputReader.cpp index 403afe760..30e391ff6 100644 --- a/libs/ui/InputReader.cpp +++ b/libs/ui/InputReader.cpp @@ -270,6 +270,10 @@ void InputReader::handleKey(const RawEvent* rawEvent) { device->trackball.accumulator.fields |= InputDevice::TrackballState::Accumulator::FIELD_BTN_MOUSE; device->trackball.accumulator.btnMouse = down; + + // Process the trackball change now since we may not receive a sync immediately. + onTrackballStateChanged(rawEvent->when, device); + device->trackball.accumulator.clear(); return; } }