Description:fix source less node bug

Match-id-3f664a99c570651a27f8a059ad7505cc6bb9437a
This commit is contained in:
xxxx
2022-07-11 10:58:51 +08:00
parent fe79afd4fd
commit a753b1f704
2 changed files with 13 additions and 10 deletions
+13 -8
View File
@@ -112,7 +112,7 @@ size_t InputHub::StartCollectInputEvents(RawEvent* buffer, size_t bufferSize)
}
{
std::unique_lock<std::mutex> deviceLock(openingDevicesMutex_);
std::unique_lock<std::mutex> deviceLock(devicesMutex_);
while (!openingDevices_.empty()) {
std::unique_ptr<Device> device = std::move(*openingDevices_.rbegin());
openingDevices_.pop_back();
@@ -238,7 +238,7 @@ size_t InputHub::DeviceIsExists(InputDeviceEvent* buffer, size_t bufferSize)
size_t capacity = bufferSize;
// Report any devices that had last been added/removed.
{
std::unique_lock<std::mutex> my_lock(closingDevicesMutex_);
std::unique_lock<std::mutex> deviceLock(devicesMutex_);
for (auto it = closingDevices_.begin(); it != closingDevices_.end();) {
std::unique_ptr<Device> device = std::move(*it);
DHLOGI("Reporting device closed: id=%s, name=%s\n",
@@ -260,7 +260,7 @@ size_t InputHub::DeviceIsExists(InputDeviceEvent* buffer, size_t bufferSize)
}
{
std::unique_lock<std::mutex> deviceLock(openingDevicesMutex_);
std::unique_lock<std::mutex> deviceLock(devicesMutex_);
while (!openingDevices_.empty()) {
std::unique_ptr<Device> device = std::move(*openingDevices_.rbegin());
openingDevices_.pop_back();
@@ -668,7 +668,7 @@ int32_t InputHub::RegisterFdForEpoll(int fd)
void InputHub::AddDeviceLocked(std::unique_ptr<Device> device)
{
std::unique_lock<std::mutex> deviceLock(openingDevicesMutex_);
std::unique_lock<std::mutex> deviceLock(devicesMutex_);
openingDevices_.push_back(std::move(device));
}
@@ -682,7 +682,6 @@ void InputHub::CloseDeviceLocked(Device& device)
device.Close();
{
std::unique_lock<std::mutex> devicesLock(devicesMutex_);
std::unique_lock<std::mutex> closingDevicesLock(closingDevicesMutex_);
closingDevices_.push_back(std::move(devices_[device.id]));
devices_.erase(device.id);
}
@@ -696,7 +695,6 @@ void InputHub::CloseDeviceForAllLocked(Device& device)
UnregisterDeviceFromEpollLocked(device);
device.Close();
std::unique_lock<std::mutex> deviceLock(closingDevicesMutex_);
closingDevices_.push_back(std::move(devices_[device.id]));
devices_.erase(device.id);
}
@@ -791,11 +789,18 @@ void InputHub::CloseAllDevicesLocked()
InputHub::Device* InputHub::GetDeviceByDescriptorLocked(const std::string& descriptor)
{
std::unique_lock<std::mutex> deviceLock(devicesMutex_);
for (const auto& [id, device] : devices_) {
if (descriptor == device->identifier.descriptor) {
for (const auto& device : openingDevices_) {
if (device && descriptor == device->identifier.descriptor) {
return device.get();
}
}
for (const auto& [id, device] : devices_) {
if (device && descriptor == device->identifier.descriptor) {
return device.get();
}
}
return nullptr;
}
-2
View File
@@ -115,9 +115,7 @@ private:
int inputWd_;
std::vector<std::unique_ptr<Device>> openingDevices_;
std::mutex openingDevicesMutex_;
std::vector<std::unique_ptr<Device>> closingDevices_;
std::mutex closingDevicesMutex_;
std::unordered_map<int32_t, std::unique_ptr<Device>> devices_;
std::mutex devicesMutex_;