summaryrefslogtreecommitdiffstats
path: root/services/core/java/com/android/server/wm/InputMonitor.java
diff options
context:
space:
mode:
Diffstat (limited to 'services/core/java/com/android/server/wm/InputMonitor.java')
-rw-r--r--services/core/java/com/android/server/wm/InputMonitor.java24
1 files changed, 13 insertions, 11 deletions
diff --git a/services/core/java/com/android/server/wm/InputMonitor.java b/services/core/java/com/android/server/wm/InputMonitor.java
index c24fcb3..ae442e5 100644
--- a/services/core/java/com/android/server/wm/InputMonitor.java
+++ b/services/core/java/com/android/server/wm/InputMonitor.java
@@ -16,10 +16,6 @@
package com.android.server.wm;
-import com.android.server.input.InputManagerService;
-import com.android.server.input.InputApplicationHandle;
-import com.android.server.input.InputWindowHandle;
-
import android.app.ActivityManagerNative;
import android.graphics.Rect;
import android.os.RemoteException;
@@ -30,17 +26,21 @@ import android.view.InputChannel;
import android.view.KeyEvent;
import android.view.WindowManager;
+import com.android.server.input.InputApplicationHandle;
+import com.android.server.input.InputManagerService;
+import com.android.server.input.InputWindowHandle;
+
import java.util.Arrays;
final class InputMonitor implements InputManagerService.WindowManagerCallbacks {
private final WindowManagerService mService;
-
+
// Current window with input focus for keys and other non-touch events. May be null.
private WindowState mInputFocus;
-
+
// When true, prevents input dispatch from proceeding until set to false again.
private boolean mInputDispatchFrozen;
-
+
// When true, input dispatch proceeds normally. Otherwise all events are dropped.
// Initially false, so that input does not get dispatched until boot is finished at
// which point the ActivityManager will enable dispatching.
@@ -256,10 +256,7 @@ final class InputMonitor implements InputManagerService.WindowManagerCallbacks {
}
}
- final int NFW = mService.mFakeWindows.size();
- for (int i = 0; i < NFW; i++) {
- addInputWindowHandleLw(mService.mFakeWindows.get(i).mWindowHandle);
- }
+ boolean addInputConsumerHandle = mService.mInputConsumer != null;
// Add all windows on the default display.
final int numDisplays = mService.mDisplayContents.size();
@@ -273,6 +270,11 @@ final class InputMonitor implements InputManagerService.WindowManagerCallbacks {
// Skip this window because it cannot possibly receive input.
continue;
}
+ if (addInputConsumerHandle
+ && inputWindowHandle.layer <= mService.mInputConsumer.mWindowHandle.layer) {
+ addInputWindowHandleLw(mService.mInputConsumer.mWindowHandle);
+ addInputConsumerHandle = false;
+ }
final int flags = child.mAttrs.flags;
final int privateFlags = child.mAttrs.privateFlags;