Refactor InputReader::mDevices collection type
Convert InputReader::mDevices from KeyedVector to unordered_map
Bug: none
Test: none
Change-Id: Id9b1fb96345c6e4e7c7a6c6e73552aad55164e4c
diff --git a/services/inputflinger/reader/InputReader.cpp b/services/inputflinger/reader/InputReader.cpp
index e57604c..1c5adc3 100644
--- a/services/inputflinger/reader/InputReader.cpp
+++ b/services/inputflinger/reader/InputReader.cpp
@@ -71,8 +71,8 @@
}
InputReader::~InputReader() {
- for (size_t i = 0; i < mDevices.size(); i++) {
- delete mDevices.valueAt(i);
+ for (auto& devicePair : mDevices) {
+ delete devicePair.second;
}
}
@@ -179,8 +179,7 @@
}
void InputReader::addDeviceLocked(nsecs_t when, int32_t deviceId) {
- ssize_t deviceIndex = mDevices.indexOfKey(deviceId);
- if (deviceIndex >= 0) {
+ if (mDevices.find(deviceId) != mDevices.end()) {
ALOGW("Ignoring spurious device added event for deviceId %d.", deviceId);
return;
}
@@ -201,7 +200,7 @@
device->getSources());
}
- mDevices.add(deviceId, device);
+ mDevices.insert({deviceId, device});
bumpGenerationLocked();
if (device->getClasses() & INPUT_DEVICE_CLASS_EXTERNAL_STYLUS) {
@@ -210,15 +209,14 @@
}
void InputReader::removeDeviceLocked(nsecs_t when, int32_t deviceId) {
- InputDevice* device = nullptr;
- ssize_t deviceIndex = mDevices.indexOfKey(deviceId);
- if (deviceIndex < 0) {
+ auto deviceIt = mDevices.find(deviceId);
+ if (deviceIt == mDevices.end()) {
ALOGW("Ignoring spurious device removed event for deviceId %d.", deviceId);
return;
}
- device = mDevices.valueAt(deviceIndex);
- mDevices.removeItemsAt(deviceIndex, 1);
+ InputDevice* device = deviceIt->second;
+ mDevices.erase(deviceIt);
bumpGenerationLocked();
if (device->isIgnored()) {
@@ -315,13 +313,13 @@
void InputReader::processEventsForDeviceLocked(int32_t deviceId, const RawEvent* rawEvents,
size_t count) {
- ssize_t deviceIndex = mDevices.indexOfKey(deviceId);
- if (deviceIndex < 0) {
+ auto deviceIt = mDevices.find(deviceId);
+ if (deviceIt == mDevices.end()) {
ALOGW("Discarding event for unknown deviceId %d.", deviceId);
return;
}
- InputDevice* device = mDevices.valueAt(deviceIndex);
+ InputDevice* device = deviceIt->second;
if (device->isIgnored()) {
// ALOGD("Discarding event for ignored deviceId %d.", deviceId);
return;
@@ -331,8 +329,8 @@
}
void InputReader::timeoutExpiredLocked(nsecs_t when) {
- for (size_t i = 0; i < mDevices.size(); i++) {
- InputDevice* device = mDevices.valueAt(i);
+ for (auto& devicePair : mDevices) {
+ InputDevice* device = devicePair.second;
if (!device->isIgnored()) {
device->timeoutExpired(when);
}
@@ -360,8 +358,8 @@
if (changes & InputReaderConfiguration::CHANGE_MUST_REOPEN) {
mEventHub->requestReopenDevices();
} else {
- for (size_t i = 0; i < mDevices.size(); i++) {
- InputDevice* device = mDevices.valueAt(i);
+ for (auto& devicePair : mDevices) {
+ InputDevice* device = devicePair.second;
device->configure(now, &mConfig, changes);
}
}
@@ -371,8 +369,8 @@
void InputReader::updateGlobalMetaStateLocked() {
mGlobalMetaState = 0;
- for (size_t i = 0; i < mDevices.size(); i++) {
- InputDevice* device = mDevices.valueAt(i);
+ for (auto& devicePair : mDevices) {
+ InputDevice* device = devicePair.second;
mGlobalMetaState |= device->getMetaState();
}
}
@@ -386,8 +384,8 @@
}
void InputReader::getExternalStylusDevicesLocked(std::vector<InputDeviceInfo>& outDevices) {
- for (size_t i = 0; i < mDevices.size(); i++) {
- InputDevice* device = mDevices.valueAt(i);
+ for (auto& devicePair : mDevices) {
+ InputDevice* device = devicePair.second;
if (device->getClasses() & INPUT_DEVICE_CLASS_EXTERNAL_STYLUS && !device->isIgnored()) {
InputDeviceInfo info;
device->getDeviceInfo(&info);
@@ -397,8 +395,8 @@
}
void InputReader::dispatchExternalStylusState(const StylusState& state) {
- for (size_t i = 0; i < mDevices.size(); i++) {
- InputDevice* device = mDevices.valueAt(i);
+ for (auto& devicePair : mDevices) {
+ InputDevice* device = devicePair.second;
device->updateExternalStylusState(state);
}
}
@@ -421,8 +419,8 @@
}
void InputReader::fadePointerLocked() {
- for (size_t i = 0; i < mDevices.size(); i++) {
- InputDevice* device = mDevices.valueAt(i);
+ for (auto& devicePair : mDevices) {
+ InputDevice* device = devicePair.second;
device->fadePointer();
}
}
@@ -446,9 +444,8 @@
void InputReader::getInputDevicesLocked(std::vector<InputDeviceInfo>& outInputDevices) {
outInputDevices.clear();
- size_t numDevices = mDevices.size();
- for (size_t i = 0; i < numDevices; i++) {
- InputDevice* device = mDevices.valueAt(i);
+ for (auto& devicePair : mDevices) {
+ InputDevice* device = devicePair.second;
if (!device->isIgnored()) {
InputDeviceInfo info;
device->getDeviceInfo(&info);
@@ -479,17 +476,16 @@
GetStateFunc getStateFunc) {
int32_t result = AKEY_STATE_UNKNOWN;
if (deviceId >= 0) {
- ssize_t deviceIndex = mDevices.indexOfKey(deviceId);
- if (deviceIndex >= 0) {
- InputDevice* device = mDevices.valueAt(deviceIndex);
+ auto deviceIt = mDevices.find(deviceId);
+ if (deviceIt != mDevices.end()) {
+ InputDevice* device = deviceIt->second;
if (!device->isIgnored() && sourcesMatchMask(device->getSources(), sourceMask)) {
result = (device->*getStateFunc)(sourceMask, code);
}
}
} else {
- size_t numDevices = mDevices.size();
- for (size_t i = 0; i < numDevices; i++) {
- InputDevice* device = mDevices.valueAt(i);
+ for (auto& devicePair : mDevices) {
+ InputDevice* device = devicePair.second;
if (!device->isIgnored() && sourcesMatchMask(device->getSources(), sourceMask)) {
// If any device reports AKEY_STATE_DOWN or AKEY_STATE_VIRTUAL, return that
// value. Otherwise, return AKEY_STATE_UP as long as one device reports it.
@@ -506,13 +502,13 @@
}
void InputReader::toggleCapsLockState(int32_t deviceId) {
- ssize_t deviceIndex = mDevices.indexOfKey(deviceId);
- if (deviceIndex < 0) {
+ auto deviceIt = mDevices.find(deviceId);
+ if (deviceIt == mDevices.end()) {
ALOGW("Ignoring toggleCapsLock for unknown deviceId %" PRId32 ".", deviceId);
return;
}
- InputDevice* device = mDevices.valueAt(deviceIndex);
+ InputDevice* device = deviceIt->second;
if (device->isIgnored()) {
return;
}
@@ -533,17 +529,16 @@
uint8_t* outFlags) {
bool result = false;
if (deviceId >= 0) {
- ssize_t deviceIndex = mDevices.indexOfKey(deviceId);
- if (deviceIndex >= 0) {
- InputDevice* device = mDevices.valueAt(deviceIndex);
+ auto deviceIt = mDevices.find(deviceId);
+ if (deviceIt != mDevices.end()) {
+ InputDevice* device = deviceIt->second;
if (!device->isIgnored() && sourcesMatchMask(device->getSources(), sourceMask)) {
result = device->markSupportedKeyCodes(sourceMask, numCodes, keyCodes, outFlags);
}
}
} else {
- size_t numDevices = mDevices.size();
- for (size_t i = 0; i < numDevices; i++) {
- InputDevice* device = mDevices.valueAt(i);
+ for (auto& devicePair : mDevices) {
+ InputDevice* device = devicePair.second;
if (!device->isIgnored() && sourcesMatchMask(device->getSources(), sourceMask)) {
result |= device->markSupportedKeyCodes(sourceMask, numCodes, keyCodes, outFlags);
}
@@ -568,10 +563,9 @@
void InputReader::vibrate(int32_t deviceId, const nsecs_t* pattern, size_t patternSize,
ssize_t repeat, int32_t token) {
AutoMutex _l(mLock);
-
- ssize_t deviceIndex = mDevices.indexOfKey(deviceId);
- if (deviceIndex >= 0) {
- InputDevice* device = mDevices.valueAt(deviceIndex);
+ auto deviceIt = mDevices.find(deviceId);
+ if (deviceIt != mDevices.end()) {
+ InputDevice* device = deviceIt->second;
device->vibrate(pattern, patternSize, repeat, token);
}
}
@@ -579,9 +573,9 @@
void InputReader::cancelVibrate(int32_t deviceId, int32_t token) {
AutoMutex _l(mLock);
- ssize_t deviceIndex = mDevices.indexOfKey(deviceId);
- if (deviceIndex >= 0) {
- InputDevice* device = mDevices.valueAt(deviceIndex);
+ auto deviceIt = mDevices.find(deviceId);
+ if (deviceIt != mDevices.end()) {
+ InputDevice* device = deviceIt->second;
device->cancelVibrate(token);
}
}
@@ -589,9 +583,9 @@
bool InputReader::isInputDeviceEnabled(int32_t deviceId) {
AutoMutex _l(mLock);
- ssize_t deviceIndex = mDevices.indexOfKey(deviceId);
- if (deviceIndex >= 0) {
- InputDevice* device = mDevices.valueAt(deviceIndex);
+ auto deviceIt = mDevices.find(deviceId);
+ if (deviceIt != mDevices.end()) {
+ InputDevice* device = deviceIt->second;
return device->isEnabled();
}
ALOGW("Ignoring invalid device id %" PRId32 ".", deviceId);
@@ -601,13 +595,13 @@
bool InputReader::canDispatchToDisplay(int32_t deviceId, int32_t displayId) {
AutoMutex _l(mLock);
- ssize_t deviceIndex = mDevices.indexOfKey(deviceId);
- if (deviceIndex < 0) {
+ auto deviceIt = mDevices.find(deviceId);
+ if (deviceIt == mDevices.end()) {
ALOGW("Ignoring invalid device id %" PRId32 ".", deviceId);
return false;
}
- InputDevice* device = mDevices.valueAt(deviceIndex);
+ InputDevice* device = deviceIt->second;
if (!device->isEnabled()) {
ALOGW("Ignoring disabled device %s", device->getName().c_str());
return false;
@@ -635,8 +629,9 @@
dump += "Input Reader State:\n";
- for (size_t i = 0; i < mDevices.size(); i++) {
- mDevices.valueAt(i)->dump(dump);
+ for (const auto& devicePair : mDevices) {
+ InputDevice* const device = devicePair.second;
+ device->dump(dump);
}
dump += INDENT "Configuration:\n";