summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--inputdev.cc36
1 files changed, 16 insertions, 20 deletions
diff --git a/inputdev.cc b/inputdev.cc
index a8e5015..3db8d76 100644
--- a/inputdev.cc
+++ b/inputdev.cc
@@ -827,16 +827,15 @@ void cInputDeviceController::remove_device(char const *dev_path)
void cInputDeviceController::remove_device(class cInputDevice *dev)
{
+ cMutexLock lock(&dev_mutex_);
+
dev->stop(fd_epoll_);
- dev_mutex_.Lock();
if (dev->container)
dev->container->Del(dev, false);
gc_devices_.Add(dev);
dev->container = &gc_devices_;
-
- dev_mutex_.Unlock();
}
bool cInputDeviceController::add_device(char const *dev_name)
@@ -854,28 +853,25 @@ bool cInputDeviceController::add_device(char const *dev_name)
desc = dev->get_description();
- {
- cMutexLock lock(&dev_mutex_);
-
- for (cInputDevice *i = devices_.First(); i;
- i = devices_.Next(i)) {
- if (dev->Compare(*i) == 0) {
- dsyslog("%s: device '%s' (%s) already registered\n",
- plugin_name(), dev_name, desc);
- delete dev;
- dev = NULL;
- break;
- }
- }
+ cMutexLock lock(&dev_mutex_);
- if (dev != NULL) {
- isyslog("%s: added input device '%s' (%s)\n",
+ for (cInputDevice *i = devices_.First(); i; i = devices_.Next(i)) {
+ if (dev->Compare(*i) == 0) {
+ dsyslog("%s: device '%s' (%s) already registered\n",
plugin_name(), dev_name, desc);
- devices_.Add(dev);
- dev->container = &devices_;
+ delete dev;
+ dev = NULL;
+ break;
}
}
+ if (dev != NULL) {
+ isyslog("%s: added input device '%s' (%s)\n",
+ plugin_name(), dev_name, desc);
+ devices_.Add(dev);
+ dev->container = &devices_;
+ }
+
if (dev != NULL && !dev->start(fd_epoll_)) {
res = false;
remove_device(dev);