Fix focused application handle.

Fix a bug where we were always setting the focused application
handle to NULL.  This broke ANR processing while starting
applications and caused input events to be dropped while
starting applications.

Bug: 4174573
Change-Id: Icd7b8c4c49ed73c41978f3ff076c2e5cd839a802
diff --git a/services/input/InputDispatcher.cpp b/services/input/InputDispatcher.cpp
index eaa7fa8..feca58d 100644
--- a/services/input/InputDispatcher.cpp
+++ b/services/input/InputDispatcher.cpp
@@ -1239,7 +1239,7 @@
         mTempTouchState.copyFrom(mTouchState);
     }
     if (wrongDevice) {
-#if DEBUG_INPUT_DISPATCHER_POLICY
+#if DEBUG_FOCUS
         LOGD("Dropping event because a pointer for a different device is already down.");
 #endif
         injectionResult = INPUT_EVENT_INJECTION_FAILED;
@@ -1380,7 +1380,7 @@
 
         // If the pointer is not currently down, then ignore the event.
         if (! mTempTouchState.down) {
-#if DEBUG_INPUT_DISPATCHER_POLICY
+#if DEBUG_FOCUS
             LOGD("Dropping event because the pointer is not down or we previously "
                     "dropped the pointer down event.");
 #endif
@@ -1428,7 +1428,7 @@
             }
         }
         if (! haveForegroundWindow) {
-#if DEBUG_INPUT_DISPATCHER_POLICY
+#if DEBUG_FOCUS
             LOGD("Dropping event because there is no touched foreground window to receive it.");
 #endif
             injectionResult = INPUT_EVENT_INJECTION_FAILED;
@@ -1445,7 +1445,7 @@
         if (touchedWindow.targetFlags & InputTarget::FLAG_FOREGROUND) {
             // If the touched window is paused then keep waiting.
             if (touchedWindow.window->paused) {
-#if DEBUG_INPUT_DISPATCHER_POLICY
+#if DEBUG_FOCUS
                 LOGD("Waiting because touched window is paused.");
 #endif
                 injectionResult = handleTargetsNotReadyLocked(currentTime, entry,
diff --git a/services/jni/com_android_server_InputManager.cpp b/services/jni/com_android_server_InputManager.cpp
index e7e1fa2..c022123 100644
--- a/services/jni/com_android_server_InputManager.cpp
+++ b/services/jni/com_android_server_InputManager.cpp
@@ -600,6 +600,7 @@
         android_server_InputApplication_toNative(env, applicationObj, &application);
         if (application.inputApplicationHandle != NULL) {
             mInputManager->getDispatcher()->setFocusedApplication(&application);
+            return;
         }
     }
     mInputManager->getDispatcher()->setFocusedApplication(NULL);