From dc95372cb5b6a223ddb25a566a0f607c0a5c4e0d Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Mon, 19 Oct 2009 11:24:39 -0700 Subject: Fix issue #2191572: Difficulties drawing window shade The touch location filtering hacks had a little problem. Change-Id: Ib57366169c87f83af1adcc8b6a00dadc01582339 --- services/java/com/android/server/InputDevice.java | 6 ++++++ services/java/com/android/server/KeyInputQueue.java | 6 ++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/services/java/com/android/server/InputDevice.java b/services/java/com/android/server/InputDevice.java index eaad3b7..6eb6242 100644 --- a/services/java/com/android/server/InputDevice.java +++ b/services/java/com/android/server/InputDevice.java @@ -65,6 +65,7 @@ public class InputDevice { // This is the last generated pointer data, ordered to match // mPointerIds. + boolean mSkipLastPointers; int mLastNumPointers = 0; final int[] mLastData = new int[MotionEvent.NUM_SAMPLE_DATA * MAX_POINTERS]; @@ -511,6 +512,11 @@ public class InputDevice { long curTimeNano, Display display, int orientation, int metaState) { + if (mSkipLastPointers) { + mSkipLastPointers = false; + mLastNumPointers = 0; + } + if (mNextNumPointers <= 0 && mLastNumPointers <= 0) { return null; } diff --git a/services/java/com/android/server/KeyInputQueue.java b/services/java/com/android/server/KeyInputQueue.java index 5d65c71..d68ccfa 100644 --- a/services/java/com/android/server/KeyInputQueue.java +++ b/services/java/com/android/server/KeyInputQueue.java @@ -689,7 +689,8 @@ public abstract class KeyInputQueue { ev, curTime, curTimeNano); if (doMotion && ms.mNextNumPointers > 0 - && ms.mLastNumPointers == 0) { + && (ms.mLastNumPointers == 0 + || ms.mSkipLastPointers)) { doMotion = !generateVirtualKeyDown(di, ev, curTime, curTimeNano); } @@ -703,7 +704,7 @@ public abstract class KeyInputQueue { me = ms.generateAbsMotion(di, curTime, curTimeNano, mDisplay, mOrientation, mGlobalMetaState); - if (false) Log.v(TAG, "Absolute: x=" + if (DEBUG_POINTERS) Log.v(TAG, "Absolute: x=" + di.mAbs.mNextData[MotionEvent.SAMPLE_X] + " y=" + di.mAbs.mNextData[MotionEvent.SAMPLE_Y] @@ -729,6 +730,7 @@ public abstract class KeyInputQueue { ms.mLastData, 0, num * MotionEvent.NUM_SAMPLE_DATA); ms.mLastNumPointers = num; + ms.mSkipLastPointers = true; } ms.finish(); -- cgit v1.1