Fix issue #2191572: Difficulties drawing window shade

The touch location filtering hacks had a little problem.

Change-Id: Ib57366169c87f83af1adcc8b6a00dadc01582339
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 @@
         
         // 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 @@
                 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 @@
                                             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 @@
                                             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 @@
                                                 ms.mLastData, 0,
                                                 num * MotionEvent.NUM_SAMPLE_DATA);
                                         ms.mLastNumPointers = num;
+                                        ms.mSkipLastPointers = true;
                                     }
                                     
                                     ms.finish();