Loading services/inputflinger/dispatcher/InputDispatcher.cpp +14 −19 Original line number Diff line number Diff line Loading @@ -3569,10 +3569,6 @@ std::vector<sp<InputWindowHandle>> InputDispatcher::getWindowHandlesLocked( sp<InputWindowHandle> InputDispatcher::getWindowHandleLocked( const sp<IBinder>& windowHandleToken) const { if (windowHandleToken == nullptr) { return nullptr; } for (auto& it : mWindowHandlesByDisplay) { const std::vector<sp<InputWindowHandle>> windowHandles = it.second; for (const sp<InputWindowHandle>& windowHandle : windowHandles) { Loading @@ -3584,22 +3580,21 @@ sp<InputWindowHandle> InputDispatcher::getWindowHandleLocked( return nullptr; } bool InputDispatcher::hasWindowHandleLocked(const sp<InputWindowHandle>& windowHandle, int32_t displayId) const { const std::vector<sp<InputWindowHandle>> windowHandles = getWindowHandlesLocked(displayId); bool InputDispatcher::hasWindowHandleLocked(const sp<InputWindowHandle>& windowHandle) const { for (auto& it : mWindowHandlesByDisplay) { const std::vector<sp<InputWindowHandle>> windowHandles = it.second; for (const sp<InputWindowHandle>& handle : windowHandles) { if (handle->getId() == windowHandle->getId() && handle->getToken() == windowHandle->getToken()) { if (handle->getInfo()->displayId != displayId) { if (handle->getToken() == windowHandle->getToken()) { if (windowHandle->getInfo()->displayId != it.first) { ALOGE("Found window %s in display %" PRId32 ", but it should belong to display %" PRId32, windowHandle->getName().c_str(), displayId, windowHandle->getName().c_str(), it.first, windowHandle->getInfo()->displayId); } return true; } } } return false; } Loading Loading @@ -3759,7 +3754,7 @@ void InputDispatcher::setInputWindowsLocked( TouchState& state = stateIt->second; for (size_t i = 0; i < state.windows.size();) { TouchedWindow& touchedWindow = state.windows[i]; if (!hasWindowHandleLocked(touchedWindow.windowHandle, displayId)) { if (!hasWindowHandleLocked(touchedWindow.windowHandle)) { if (DEBUG_FOCUS) { ALOGD("Touched window was removed: %s in display %" PRId32, touchedWindow.windowHandle->getName().c_str(), displayId); Loading @@ -3783,7 +3778,7 @@ void InputDispatcher::setInputWindowsLocked( // Otherwise, they might stick around until the window handle is destroyed // which might not happen until the next GC. for (const sp<InputWindowHandle>& oldWindowHandle : oldWindowHandles) { if (!hasWindowHandleLocked(oldWindowHandle, displayId)) { if (!hasWindowHandleLocked(oldWindowHandle)) { if (DEBUG_FOCUS) { ALOGD("Window went away: %s", oldWindowHandle->getName().c_str()); } Loading services/inputflinger/dispatcher/InputDispatcher.h +1 −2 Original line number Diff line number Diff line Loading @@ -301,8 +301,7 @@ private: sp<InputWindowHandle> getWindowHandleLocked(const sp<IBinder>& windowHandleToken) const REQUIRES(mLock); sp<InputChannel> getInputChannelLocked(const sp<IBinder>& windowToken) const REQUIRES(mLock); bool hasWindowHandleLocked(const sp<InputWindowHandle>& windowHandle, int32_t displayId) const REQUIRES(mLock); bool hasWindowHandleLocked(const sp<InputWindowHandle>& windowHandle) const REQUIRES(mLock); /* * Validate and update InputWindowHandles for a given display. Loading Loading
services/inputflinger/dispatcher/InputDispatcher.cpp +14 −19 Original line number Diff line number Diff line Loading @@ -3569,10 +3569,6 @@ std::vector<sp<InputWindowHandle>> InputDispatcher::getWindowHandlesLocked( sp<InputWindowHandle> InputDispatcher::getWindowHandleLocked( const sp<IBinder>& windowHandleToken) const { if (windowHandleToken == nullptr) { return nullptr; } for (auto& it : mWindowHandlesByDisplay) { const std::vector<sp<InputWindowHandle>> windowHandles = it.second; for (const sp<InputWindowHandle>& windowHandle : windowHandles) { Loading @@ -3584,22 +3580,21 @@ sp<InputWindowHandle> InputDispatcher::getWindowHandleLocked( return nullptr; } bool InputDispatcher::hasWindowHandleLocked(const sp<InputWindowHandle>& windowHandle, int32_t displayId) const { const std::vector<sp<InputWindowHandle>> windowHandles = getWindowHandlesLocked(displayId); bool InputDispatcher::hasWindowHandleLocked(const sp<InputWindowHandle>& windowHandle) const { for (auto& it : mWindowHandlesByDisplay) { const std::vector<sp<InputWindowHandle>> windowHandles = it.second; for (const sp<InputWindowHandle>& handle : windowHandles) { if (handle->getId() == windowHandle->getId() && handle->getToken() == windowHandle->getToken()) { if (handle->getInfo()->displayId != displayId) { if (handle->getToken() == windowHandle->getToken()) { if (windowHandle->getInfo()->displayId != it.first) { ALOGE("Found window %s in display %" PRId32 ", but it should belong to display %" PRId32, windowHandle->getName().c_str(), displayId, windowHandle->getName().c_str(), it.first, windowHandle->getInfo()->displayId); } return true; } } } return false; } Loading Loading @@ -3759,7 +3754,7 @@ void InputDispatcher::setInputWindowsLocked( TouchState& state = stateIt->second; for (size_t i = 0; i < state.windows.size();) { TouchedWindow& touchedWindow = state.windows[i]; if (!hasWindowHandleLocked(touchedWindow.windowHandle, displayId)) { if (!hasWindowHandleLocked(touchedWindow.windowHandle)) { if (DEBUG_FOCUS) { ALOGD("Touched window was removed: %s in display %" PRId32, touchedWindow.windowHandle->getName().c_str(), displayId); Loading @@ -3783,7 +3778,7 @@ void InputDispatcher::setInputWindowsLocked( // Otherwise, they might stick around until the window handle is destroyed // which might not happen until the next GC. for (const sp<InputWindowHandle>& oldWindowHandle : oldWindowHandles) { if (!hasWindowHandleLocked(oldWindowHandle, displayId)) { if (!hasWindowHandleLocked(oldWindowHandle)) { if (DEBUG_FOCUS) { ALOGD("Window went away: %s", oldWindowHandle->getName().c_str()); } Loading
services/inputflinger/dispatcher/InputDispatcher.h +1 −2 Original line number Diff line number Diff line Loading @@ -301,8 +301,7 @@ private: sp<InputWindowHandle> getWindowHandleLocked(const sp<IBinder>& windowHandleToken) const REQUIRES(mLock); sp<InputChannel> getInputChannelLocked(const sp<IBinder>& windowToken) const REQUIRES(mLock); bool hasWindowHandleLocked(const sp<InputWindowHandle>& windowHandle, int32_t displayId) const REQUIRES(mLock); bool hasWindowHandleLocked(const sp<InputWindowHandle>& windowHandle) const REQUIRES(mLock); /* * Validate and update InputWindowHandles for a given display. Loading