From 63e4053ffdd9ce6cf4c6582474327811ba2b7925 Mon Sep 17 00:00:00 2001 From: Riddle Hsu Date: Mon, 14 Jan 2019 21:30:07 +0800 Subject: [PATCH] Fix NPE in notifyFocusChanged Before the first focus change, mFocusedWindow is null. Bug: 121122996 Test: manual - Switch between activities without exception log. Change-Id: Id09ec08296daab5335a4c3167d61e5e21f148016 --- .../com/android/server/input/InputManagerService.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/input/InputManagerService.java b/services/core/java/com/android/server/input/InputManagerService.java index df28f30d9127b..979de66f1dc88 100644 --- a/services/core/java/com/android/server/input/InputManagerService.java +++ b/services/core/java/com/android/server/input/InputManagerService.java @@ -1761,12 +1761,15 @@ public class InputManagerService extends IInputManager.Stub // Native callback private void notifyFocusChanged(IBinder oldToken, IBinder newToken) { - if (mFocusedWindow.asBinder() == newToken) { - Log.w(TAG, "notifyFocusChanged called with unchanged mFocusedWindow=" + mFocusedWindow); - return; + if (mFocusedWindow != null) { + if (mFocusedWindow.asBinder() == newToken) { + Slog.w(TAG, "notifyFocusChanged called with unchanged mFocusedWindow=" + + mFocusedWindow); + return; + } + setPointerCapture(false); } - setPointerCapture(false); mFocusedWindow = IWindow.Stub.asInterface(newToken); }