@@ -145,8 +145,8 @@ void VelocityTracker::addMovement(nsecs_t eventTime, BitSet32 idBits, const Posi
145145 " estimator (degree=%d, xCoeff=%s, yCoeff=%s, confidence=%f)" ,
146146 id, positions[index].x , positions[index].y ,
147147 int (estimator.degree ),
148- vectorToString (estimator.xCoeff , estimator.degree ).string (),
149- vectorToString (estimator.yCoeff , estimator.degree ).string (),
148+ vectorToString (estimator.xCoeff , estimator.degree + 1 ).string (),
149+ vectorToString (estimator.yCoeff , estimator.degree + 1 ).string (),
150150 estimator.confidence );
151151 }
152152#endif
@@ -195,23 +195,30 @@ void VelocityTracker::addMovement(const MotionEvent* event) {
195195 idBits.markBit (event->getPointerId (i));
196196 }
197197
198+ uint32_t pointerIndex[MAX_POINTERS];
199+ for (size_t i = 0 ; i < pointerCount; i++) {
200+ pointerIndex[i] = idBits.getIndexOfBit (event->getPointerId (i));
201+ }
202+
198203 nsecs_t eventTime;
199204 Position positions[pointerCount];
200205
201206 size_t historySize = event->getHistorySize ();
202207 for (size_t h = 0 ; h < historySize; h++) {
203208 eventTime = event->getHistoricalEventTime (h);
204209 for (size_t i = 0 ; i < pointerCount; i++) {
205- positions[i].x = event->getHistoricalX (i, h);
206- positions[i].y = event->getHistoricalY (i, h);
210+ uint32_t index = pointerIndex[i];
211+ positions[index].x = event->getHistoricalX (i, h);
212+ positions[index].y = event->getHistoricalY (i, h);
207213 }
208214 addMovement (eventTime, idBits, positions);
209215 }
210216
211217 eventTime = event->getEventTime ();
212218 for (size_t i = 0 ; i < pointerCount; i++) {
213- positions[i].x = event->getX (i);
214- positions[i].y = event->getY (i);
219+ uint32_t index = pointerIndex[i];
220+ positions[index].x = event->getX (i);
221+ positions[index].y = event->getY (i);
215222 }
216223 addMovement (eventTime, idBits, positions);
217224}
0 commit comments