Loading services/inputflinger/dispatcher/InputDispatcher.cpp +27 −0 Original line number Diff line number Diff line Loading @@ -4404,6 +4404,24 @@ std::string InputDispatcher::dumpFocusedWindowsLocked() { return dump; } std::string InputDispatcher::dumpPendingFocusRequestsLocked() { if (mPendingFocusRequests.empty()) { return INDENT "mPendingFocusRequests: <none>\n"; } std::string dump; dump += INDENT "mPendingFocusRequests:\n"; for (const auto& [displayId, focusRequest] : mPendingFocusRequests) { // Rather than printing raw values for focusRequest.token and focusRequest.focusedToken, // try to resolve them to actual windows. std::string windowName = getConnectionNameLocked(focusRequest.token); std::string focusedWindowName = getConnectionNameLocked(focusRequest.focusedToken); dump += StringPrintf(INDENT2 "displayId=%" PRId32 ", token->%s, focusedToken->%s\n", displayId, windowName.c_str(), focusedWindowName.c_str()); } return dump; } void InputDispatcher::dumpDispatchStateLocked(std::string& dump) { dump += StringPrintf(INDENT "DispatchEnabled: %s\n", toString(mDispatchEnabled)); dump += StringPrintf(INDENT "DispatchFrozen: %s\n", toString(mDispatchFrozen)); Loading @@ -4426,6 +4444,7 @@ void InputDispatcher::dumpDispatchStateLocked(std::string& dump) { } dump += dumpFocusedWindowsLocked(); dump += dumpPendingFocusRequestsLocked(); if (!mTouchStatesByDisplay.empty()) { dump += StringPrintf(INDENT "TouchStatesByDisplay:\n"); Loading Loading @@ -4833,6 +4852,14 @@ sp<Connection> InputDispatcher::getConnectionLocked(const sp<IBinder>& inputConn return nullptr; } std::string InputDispatcher::getConnectionNameLocked(const sp<IBinder>& connectionToken) const { sp<Connection> connection = getConnectionLocked(connectionToken); if (connection == nullptr) { return "<nullptr>"; } return connection->getInputChannelName(); } void InputDispatcher::removeConnectionLocked(const sp<Connection>& connection) { mAnrTracker.eraseToken(connection->inputChannel->getConnectionToken()); removeByValue(mConnectionsByFd, connection); Loading services/inputflinger/dispatcher/InputDispatcher.h +3 −0 Original line number Diff line number Diff line Loading @@ -210,6 +210,8 @@ private: sp<Connection> getConnectionLocked(const sp<IBinder>& inputConnectionToken) const REQUIRES(mLock); std::string getConnectionNameLocked(const sp<IBinder>& connectionToken) const REQUIRES(mLock); void removeConnectionLocked(const sp<Connection>& connection) REQUIRES(mLock); struct IBinderHash { Loading Loading @@ -532,6 +534,7 @@ private: void dumpMonitors(std::string& dump, const std::vector<Monitor>& monitors); void logDispatchStateLocked() REQUIRES(mLock); std::string dumpFocusedWindowsLocked() REQUIRES(mLock); std::string dumpPendingFocusRequestsLocked() REQUIRES(mLock); // Registration. void removeMonitorChannelLocked(const sp<IBinder>& connectionToken) REQUIRES(mLock); Loading Loading
services/inputflinger/dispatcher/InputDispatcher.cpp +27 −0 Original line number Diff line number Diff line Loading @@ -4404,6 +4404,24 @@ std::string InputDispatcher::dumpFocusedWindowsLocked() { return dump; } std::string InputDispatcher::dumpPendingFocusRequestsLocked() { if (mPendingFocusRequests.empty()) { return INDENT "mPendingFocusRequests: <none>\n"; } std::string dump; dump += INDENT "mPendingFocusRequests:\n"; for (const auto& [displayId, focusRequest] : mPendingFocusRequests) { // Rather than printing raw values for focusRequest.token and focusRequest.focusedToken, // try to resolve them to actual windows. std::string windowName = getConnectionNameLocked(focusRequest.token); std::string focusedWindowName = getConnectionNameLocked(focusRequest.focusedToken); dump += StringPrintf(INDENT2 "displayId=%" PRId32 ", token->%s, focusedToken->%s\n", displayId, windowName.c_str(), focusedWindowName.c_str()); } return dump; } void InputDispatcher::dumpDispatchStateLocked(std::string& dump) { dump += StringPrintf(INDENT "DispatchEnabled: %s\n", toString(mDispatchEnabled)); dump += StringPrintf(INDENT "DispatchFrozen: %s\n", toString(mDispatchFrozen)); Loading @@ -4426,6 +4444,7 @@ void InputDispatcher::dumpDispatchStateLocked(std::string& dump) { } dump += dumpFocusedWindowsLocked(); dump += dumpPendingFocusRequestsLocked(); if (!mTouchStatesByDisplay.empty()) { dump += StringPrintf(INDENT "TouchStatesByDisplay:\n"); Loading Loading @@ -4833,6 +4852,14 @@ sp<Connection> InputDispatcher::getConnectionLocked(const sp<IBinder>& inputConn return nullptr; } std::string InputDispatcher::getConnectionNameLocked(const sp<IBinder>& connectionToken) const { sp<Connection> connection = getConnectionLocked(connectionToken); if (connection == nullptr) { return "<nullptr>"; } return connection->getInputChannelName(); } void InputDispatcher::removeConnectionLocked(const sp<Connection>& connection) { mAnrTracker.eraseToken(connection->inputChannel->getConnectionToken()); removeByValue(mConnectionsByFd, connection); Loading
services/inputflinger/dispatcher/InputDispatcher.h +3 −0 Original line number Diff line number Diff line Loading @@ -210,6 +210,8 @@ private: sp<Connection> getConnectionLocked(const sp<IBinder>& inputConnectionToken) const REQUIRES(mLock); std::string getConnectionNameLocked(const sp<IBinder>& connectionToken) const REQUIRES(mLock); void removeConnectionLocked(const sp<Connection>& connection) REQUIRES(mLock); struct IBinderHash { Loading Loading @@ -532,6 +534,7 @@ private: void dumpMonitors(std::string& dump, const std::vector<Monitor>& monitors); void logDispatchStateLocked() REQUIRES(mLock); std::string dumpFocusedWindowsLocked() REQUIRES(mLock); std::string dumpPendingFocusRequestsLocked() REQUIRES(mLock); // Registration. void removeMonitorChannelLocked(const sp<IBinder>& connectionToken) REQUIRES(mLock); Loading