Merge "Use unordered_map in InputEventSender"
diff --git a/core/jni/android_view_InputEventReceiver.cpp b/core/jni/android_view_InputEventReceiver.cpp
index fb6dd93..7975c86 100644
--- a/core/jni/android_view_InputEventReceiver.cpp
+++ b/core/jni/android_view_InputEventReceiver.cpp
@@ -23,10 +23,9 @@
#include <nativehelper/JNIHelp.h>
#include <android_runtime/AndroidRuntime.h>
-#include <utils/Log.h>
+#include <log/log.h>
#include <utils/Looper.h>
#include <utils/Vector.h>
-#include <utils/threads.h>
#include <input/InputTransport.h>
#include "android_os_MessageQueue.h"
#include "android_view_InputChannel.h"
diff --git a/core/jni/android_view_InputEventSender.cpp b/core/jni/android_view_InputEventSender.cpp
index aa10a2f..2542286 100644
--- a/core/jni/android_view_InputEventSender.cpp
+++ b/core/jni/android_view_InputEventSender.cpp
@@ -21,10 +21,8 @@
#include <nativehelper/JNIHelp.h>
#include <android_runtime/AndroidRuntime.h>
-#include <utils/Log.h>
+#include <log/log.h>
#include <utils/Looper.h>
-#include <utils/threads.h>
-#include <utils/KeyedVector.h>
#include <input/InputTransport.h>
#include "android_os_MessageQueue.h"
#include "android_view_InputChannel.h"
@@ -32,6 +30,7 @@
#include "android_view_MotionEvent.h"
#include <nativehelper/ScopedLocalRef.h>
+#include <unordered_map>
#include "core_jni_helpers.h"
@@ -65,7 +64,8 @@
jobject mSenderWeakGlobal;
InputPublisher mInputPublisher;
sp<MessageQueue> mMessageQueue;
- KeyedVector<uint32_t, uint32_t> mPublishedSeqMap;
+ std::unordered_map<uint32_t, uint32_t> mPublishedSeqMap;
+
uint32_t mNextPublishedSeq;
const std::string getInputChannelName() {
@@ -122,7 +122,7 @@
getInputChannelName().c_str(), status);
return status;
}
- mPublishedSeqMap.add(publishedSeq, seq);
+ mPublishedSeqMap.emplace(publishedSeq, seq);
return OK;
}
@@ -150,7 +150,7 @@
return status;
}
}
- mPublishedSeqMap.add(publishedSeq, seq);
+ mPublishedSeqMap.emplace(publishedSeq, seq);
return OK;
}
@@ -199,35 +199,37 @@
return status;
}
- ssize_t index = mPublishedSeqMap.indexOfKey(publishedSeq);
- if (index >= 0) {
- uint32_t seq = mPublishedSeqMap.valueAt(index);
- mPublishedSeqMap.removeItemsAt(index);
+ auto it = mPublishedSeqMap.find(publishedSeq);
+ if (it == mPublishedSeqMap.end()) {
+ continue;
+ }
- if (kDebugDispatchCycle) {
- ALOGD("channel '%s' ~ Received finished signal, seq=%u, handled=%s, "
- "pendingEvents=%zu.",
- getInputChannelName().c_str(), seq, handled ? "true" : "false",
- mPublishedSeqMap.size());
+ uint32_t seq = it->second;
+ mPublishedSeqMap.erase(it);
+
+ if (kDebugDispatchCycle) {
+ ALOGD("channel '%s' ~ Received finished signal, seq=%u, handled=%s, "
+ "pendingEvents=%zu.",
+ getInputChannelName().c_str(), seq, handled ? "true" : "false",
+ mPublishedSeqMap.size());
+ }
+
+ if (!skipCallbacks) {
+ if (!senderObj.get()) {
+ senderObj.reset(jniGetReferent(env, mSenderWeakGlobal));
+ if (!senderObj.get()) {
+ ALOGW("channel '%s' ~ Sender object was finalized "
+ "without being disposed.", getInputChannelName().c_str());
+ return DEAD_OBJECT;
+ }
}
- if (!skipCallbacks) {
- if (!senderObj.get()) {
- senderObj.reset(jniGetReferent(env, mSenderWeakGlobal));
- if (!senderObj.get()) {
- ALOGW("channel '%s' ~ Sender object was finalized "
- "without being disposed.", getInputChannelName().c_str());
- return DEAD_OBJECT;
- }
- }
-
- env->CallVoidMethod(senderObj.get(),
- gInputEventSenderClassInfo.dispatchInputEventFinished,
- jint(seq), jboolean(handled));
- if (env->ExceptionCheck()) {
- ALOGE("Exception dispatching finished signal.");
- skipCallbacks = true;
- }
+ env->CallVoidMethod(senderObj.get(),
+ gInputEventSenderClassInfo.dispatchInputEventFinished,
+ jint(seq), jboolean(handled));
+ if (env->ExceptionCheck()) {
+ ALOGE("Exception dispatching finished signal.");
+ skipCallbacks = true;
}
}
}