Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 22d789d5 authored by Jeff Brown's avatar Jeff Brown Committed by Jeff Brown
Browse files

Fix focused application handle. (DO NOT MERGE)

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: Ice7ce3a2b65219568a8227fc1383bafb294666b5
parent dbf8d27f
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -1198,7 +1198,7 @@ int32_t InputDispatcher::findTouchedWindowTargetsLocked(nsecs_t currentTime,
        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;
@@ -1318,7 +1318,7 @@ int32_t InputDispatcher::findTouchedWindowTargetsLocked(nsecs_t currentTime,

        // 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
@@ -1343,7 +1343,7 @@ int32_t InputDispatcher::findTouchedWindowTargetsLocked(nsecs_t currentTime,
            }
        }
        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;
@@ -1360,7 +1360,7 @@ int32_t InputDispatcher::findTouchedWindowTargetsLocked(nsecs_t currentTime,
        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,
+1 −0
Original line number Diff line number Diff line
@@ -606,6 +606,7 @@ void NativeInputManager::setFocusedApplication(JNIEnv* env, jobject applicationO
        android_server_InputApplication_toNative(env, applicationObj, &application);
        if (application.inputApplicationHandle != NULL) {
            mInputManager->getDispatcher()->setFocusedApplication(&application);
            return;
        }
    }
    mInputManager->getDispatcher()->setFocusedApplication(NULL);