summaryrefslogtreecommitdiff
path: root/services/inputflinger/InputDispatcher.cpp
diff options
context:
space:
mode:
author chaviw <chaviw@google.com> 2019-01-09 13:27:07 -0800
committer chaviw <chaviw@google.com> 2019-01-10 10:03:38 -0800
commit0c06c6ea505b165ca73d952f4cbe65eb312d6932 (patch)
tree3905d8339c5a68206cc4921239e33a420917cc9c /services/inputflinger/InputDispatcher.cpp
parent4db5fa02cf4c13901b1e3ae3f359efda6a62e91a (diff)
Added last focused window to notifyFocusChanged callback
Test: Builds and runs Bug: 121122996 Change-Id: I322eb7ae9b9e7489a621e7505719b748add01e2d
Diffstat (limited to 'services/inputflinger/InputDispatcher.cpp')
-rw-r--r--services/inputflinger/InputDispatcher.cpp18
1 files changed, 11 insertions, 7 deletions
diff --git a/services/inputflinger/InputDispatcher.cpp b/services/inputflinger/InputDispatcher.cpp
index 6173452166..be5c214740 100644
--- a/services/inputflinger/InputDispatcher.cpp
+++ b/services/inputflinger/InputDispatcher.cpp
@@ -3174,7 +3174,7 @@ void InputDispatcher::setInputWindows(const Vector<sp<InputWindowHandle>>& input
}
if (mFocusedDisplayId == displayId) {
- onFocusChangedLocked(newFocusedWindowHandle);
+ onFocusChangedLocked(oldFocusedWindowHandle, newFocusedWindowHandle);
}
}
@@ -3292,7 +3292,7 @@ void InputDispatcher::setFocusedDisplay(int32_t displayId) {
// Sanity check
sp<InputWindowHandle> newFocusedWindowHandle =
getValueByKey(mFocusedWindowHandlesByDisplay, displayId);
- onFocusChangedLocked(newFocusedWindowHandle);
+ onFocusChangedLocked(oldFocusedWindowHandle, newFocusedWindowHandle);
if (newFocusedWindowHandle == nullptr) {
ALOGW("Focused display #%" PRId32 " does not have a focused window.", displayId);
@@ -3853,11 +3853,14 @@ void InputDispatcher::onDispatchCycleBrokenLocked(
commandEntry->connection = connection;
}
-void InputDispatcher::onFocusChangedLocked(const sp<InputWindowHandle>& newFocus) {
- sp<IBinder> token = newFocus != nullptr ? newFocus->getToken() : nullptr;
+void InputDispatcher::onFocusChangedLocked(const sp<InputWindowHandle>& oldFocus,
+ const sp<InputWindowHandle>& newFocus) {
+ sp<IBinder> oldToken = oldFocus != nullptr ? oldFocus->getToken() : nullptr;
+ sp<IBinder> newToken = newFocus != nullptr ? newFocus->getToken() : nullptr;
CommandEntry* commandEntry = postCommandLocked(
& InputDispatcher::doNotifyFocusChangedLockedInterruptible);
- commandEntry->token = token;
+ commandEntry->oldToken = oldToken;
+ commandEntry->newToken = newToken;
}
void InputDispatcher::onANRLocked(
@@ -3919,9 +3922,10 @@ void InputDispatcher::doNotifyInputChannelBrokenLockedInterruptible(
void InputDispatcher::doNotifyFocusChangedLockedInterruptible(
CommandEntry* commandEntry) {
- sp<IBinder> token = commandEntry->token;
+ sp<IBinder> oldToken = commandEntry->oldToken;
+ sp<IBinder> newToken = commandEntry->newToken;
mLock.unlock();
- mPolicy->notifyFocusChanged(token);
+ mPolicy->notifyFocusChanged(oldToken, newToken);
mLock.lock();
}