diff options
-rw-r--r-- | services/input/InputDispatcher.cpp | 20 | ||||
-rw-r--r-- | services/java/com/android/server/wm/WindowManagerService.java | 6 |
2 files changed, 16 insertions, 10 deletions
diff --git a/services/input/InputDispatcher.cpp b/services/input/InputDispatcher.cpp index cbdfe8c..3cd3ac3 100644 --- a/services/input/InputDispatcher.cpp +++ b/services/input/InputDispatcher.cpp @@ -3196,10 +3196,12 @@ void InputDispatcher::setInputWindows(const Vector<sp<InputWindowHandle> >& inpu LOGD("Focus left window: %s", mFocusedWindowHandle->name.string()); #endif - CancelationOptions options(CancelationOptions::CANCEL_NON_POINTER_EVENTS, - "focus left window"); - synthesizeCancelationEventsForInputChannelLocked( - mFocusedWindowHandle->inputChannel, options); + if (mFocusedWindowHandle->inputChannel != NULL) { + CancelationOptions options(CancelationOptions::CANCEL_NON_POINTER_EVENTS, + "focus left window"); + synthesizeCancelationEventsForInputChannelLocked( + mFocusedWindowHandle->inputChannel, options); + } } if (newFocusedWindowHandle != NULL) { #if DEBUG_FOCUS @@ -3216,10 +3218,12 @@ void InputDispatcher::setInputWindows(const Vector<sp<InputWindowHandle> >& inpu #if DEBUG_FOCUS LOGD("Touched window was removed: %s", touchedWindow.windowHandle->name.string()); #endif - CancelationOptions options(CancelationOptions::CANCEL_POINTER_EVENTS, - "touched window was removed"); - synthesizeCancelationEventsForInputChannelLocked( - touchedWindow.windowHandle->inputChannel, options); + if (touchedWindow.windowHandle->inputChannel != NULL) { + CancelationOptions options(CancelationOptions::CANCEL_POINTER_EVENTS, + "touched window was removed"); + synthesizeCancelationEventsForInputChannelLocked( + touchedWindow.windowHandle->inputChannel, options); + } mTouchState.windows.removeAt(i--); } } diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java index 5967428..8fd4f95 100644 --- a/services/java/com/android/server/wm/WindowManagerService.java +++ b/services/java/com/android/server/wm/WindowManagerService.java @@ -6573,8 +6573,10 @@ public class WindowManagerService extends IWindowManager.Stub } synchronized (mWindowMap) { // !!! TODO: ANR the drag-receiving app - mDragState.mDragResult = false; - mDragState.endDragLw(); + if (mDragState != null) { + mDragState.mDragResult = false; + mDragState.endDragLw(); + } } break; } |