Fix trackball down and movement bugs.

Bug: 2823788
Change-Id: Icb0c392b58f7e735614460b5eb87439cb73ac4f2
This commit is contained in:
Jeff Brown
2010-07-16 17:21:06 -07:00
parent ace999b096
commit d3616592fe
2 changed files with 15 additions and 1 deletions

View File

@@ -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,

View File

@@ -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;
}
}