From 0c17a2b2ea5c7bd4f6c9bd426e67c40022e3d84c Mon Sep 17 00:00:00 2001 From: Craig Mautner Date: Tue, 11 Nov 2014 13:28:43 -0800 Subject: [PATCH] Stop consuming input on error dialogs. This code is no longer necessary and was preventing input from reaching their desired windows. See bug 17648830. Change-Id: Ib1c026ece70e6fa98343340b89af4199d6d0ffca --- services/inputflinger/InputDispatcher.cpp | 25 ----------------------- services/inputflinger/InputWindow.h | 6 ------ 2 files changed, 31 deletions(-) diff --git a/services/inputflinger/InputDispatcher.cpp b/services/inputflinger/InputDispatcher.cpp index 02fb6f04d..603836a5a 100644 --- a/services/inputflinger/InputDispatcher.cpp +++ b/services/inputflinger/InputDispatcher.cpp @@ -477,7 +477,6 @@ sp InputDispatcher::findTouchedWindowAtLocked(int32_t display const InputWindowInfo* windowInfo = windowHandle->getInfo(); if (windowInfo->displayId == displayId) { int32_t flags = windowInfo->layoutParamsFlags; - int32_t privateFlags = windowInfo->layoutParamsPrivateFlags; if (windowInfo->visible) { if (!(flags & InputWindowInfo::FLAG_NOT_TOUCHABLE)) { @@ -489,11 +488,6 @@ sp InputDispatcher::findTouchedWindowAtLocked(int32_t display } } } - - if (privateFlags & InputWindowInfo::PRIVATE_FLAG_SYSTEM_ERROR) { - // Error window is on top but not visible, so touch is dropped. - return NULL; - } } } return NULL; @@ -1190,7 +1184,6 @@ int32_t InputDispatcher::findTouchedWindowTargetsLocked(nsecs_t currentTime, int32_t y = int32_t(entry->pointerCoords[pointerIndex]. getAxisValue(AMOTION_EVENT_AXIS_Y)); sp newTouchedWindowHandle; - sp topErrorWindowHandle; bool isTouchModal = false; // Traverse windows from front to back to find touched window and outside targets. @@ -1202,13 +1195,6 @@ int32_t InputDispatcher::findTouchedWindowTargetsLocked(nsecs_t currentTime, continue; // wrong display } - int32_t privateFlags = windowInfo->layoutParamsPrivateFlags; - if (privateFlags & InputWindowInfo::PRIVATE_FLAG_SYSTEM_ERROR) { - if (topErrorWindowHandle == NULL) { - topErrorWindowHandle = windowHandle; - } - } - int32_t flags = windowInfo->layoutParamsFlags; if (windowInfo->visible) { if (! (flags & InputWindowInfo::FLAG_NOT_TOUCHABLE)) { @@ -1233,17 +1219,6 @@ int32_t InputDispatcher::findTouchedWindowTargetsLocked(nsecs_t currentTime, } } - // If there is an error window but it is not taking focus (typically because - // it is invisible) then wait for it. Any other focused window may in - // fact be in ANR state. - if (topErrorWindowHandle != NULL && newTouchedWindowHandle != topErrorWindowHandle) { - injectionResult = handleTargetsNotReadyLocked(currentTime, entry, - NULL, NULL, nextWakeupTime, - "Waiting because a system error window is about to be displayed."); - injectionPermission = INJECTION_PERMISSION_UNKNOWN; - goto Unresponsive; - } - // Figure out whether splitting will be allowed for this window. if (newTouchedWindowHandle != NULL && newTouchedWindowHandle->getInfo()->supportsSplitTouch()) { diff --git a/services/inputflinger/InputWindow.h b/services/inputflinger/InputWindow.h index 5879c84a6..42457ce41 100644 --- a/services/inputflinger/InputWindow.h +++ b/services/inputflinger/InputWindow.h @@ -64,11 +64,6 @@ struct InputWindowInfo { FLAG_NEEDS_MENU_KEY = 0x40000000, }; - // Private Window flags from WindowManager.LayoutParams - enum { - PRIVATE_FLAG_SYSTEM_ERROR = 0x00000100, - }; - // Window types from WindowManager.LayoutParams enum { FIRST_APPLICATION_WINDOW = 1, @@ -119,7 +114,6 @@ struct InputWindowInfo { sp inputChannel; String8 name; int32_t layoutParamsFlags; - int32_t layoutParamsPrivateFlags; int32_t layoutParamsType; nsecs_t dispatchingTimeout; int32_t frameLeft;