diff options
Diffstat (limited to 'packages/SystemUI/src')
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java index d0a6385..b78239b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java @@ -118,7 +118,7 @@ public class PanelView extends FrameLayout { int i = 0; float totalweight = 0f; float weight = 10f; - for (final Iterator<MotionEventCopy> iter = mEventBuf.descendingIterator(); + for (final Iterator<MotionEventCopy> iter = mEventBuf.iterator(); iter.hasNext();) { final MotionEventCopy event = iter.next(); if (last != null) { @@ -126,13 +126,22 @@ public class PanelView extends FrameLayout { final float dx = (event.x - last.x); final float dy = (event.y - last.y); if (FlingTracker.DEBUG) { - Log.v("FlingTracker", String.format(" [%d] dx=%.1f dy=%.1f dt=%.0f vx=%.1f vy=%.1f", - i, + Log.v("FlingTracker", String.format( + " [%d] (t=%d %.1f,%.1f) dx=%.1f dy=%.1f dt=%f vx=%.1f vy=%.1f", + i, event.t, event.x, event.y, dx, dy, dt, (dx/dt), (dy/dt) )); } + if (event.t == last.t) { + // Really not sure what to do with events that happened at the same time, + // so we'll skip subsequent events. + if (DEBUG_NAN) { + Log.v("FlingTracker", "skipping simultaneous event at t=" + event.t); + } + continue; + } mVX += weight * dx / dt; mVY += weight * dy / dt; totalweight += weight; @@ -158,18 +167,18 @@ public class PanelView extends FrameLayout { } } public float getXVelocity() { - if (Float.isNaN(mVX)) { + if (Float.isNaN(mVX) || Float.isInfinite(mVX)) { if (DEBUG_NAN) { - Log.v("FlingTracker", "warning: vx=NaN"); + Log.v("FlingTracker", "warning: vx=" + mVX); } mVX = 0; } return mVX; } public float getYVelocity() { - if (Float.isNaN(mVY)) { + if (Float.isNaN(mVY) || Float.isInfinite(mVX)) { if (DEBUG_NAN) { - Log.v("FlingTracker", "warning: vx=NaN"); + Log.v("FlingTracker", "warning: vx=" + mVY); } mVY = 0; } |