summaryrefslogtreecommitdiffstats
path: root/libs
diff options
context:
space:
mode:
authorSean McNeil <sean.mcneil@windriver.com>2010-06-23 16:00:37 +0700
committerJean-Baptiste Queru <jbq@google.com>2010-08-23 12:54:30 -0700
commit40a87586761450f80ad44f948a35266e87f326de (patch)
tree7691215d9021aaec36463e321985db6223928b6f /libs
parente7731f0a7f824add1fffa391965cbfeaf7cb2cf2 (diff)
downloadframeworks_base-40a87586761450f80ad44f948a35266e87f326de.zip
frameworks_base-40a87586761450f80ad44f948a35266e87f326de.tar.gz
frameworks_base-40a87586761450f80ad44f948a35266e87f326de.tar.bz2
Only monitor recognized uevent devices.
system_server can potentially monitor uevent devices that are of no use to it. For instance, an accelerometer implementation as uevents. This would cause the process to be busy when unnecessary. If a device cannot be classified, don't monitor it. Change-Id: I489cc453bdce7cb376102cba67a9ea470e13292d
Diffstat (limited to 'libs')
-rw-r--r--libs/ui/EventHub.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/libs/ui/EventHub.cpp b/libs/ui/EventHub.cpp
index 076e1d9..2d4c2e2 100644
--- a/libs/ui/EventHub.cpp
+++ b/libs/ui/EventHub.cpp
@@ -528,7 +528,6 @@ int EventHub::open_device(const char *deviceName)
if (strcmp(name, test) == 0) {
LOGI("ignoring event id %s driver %s\n", deviceName, test);
close(fd);
- fd = -1;
return -1;
}
}
@@ -737,6 +736,14 @@ int EventHub::open_device(const char *deviceName)
device->id, name, propName, keylayoutFilename);
}
+ // If the device isn't recognized as something we handle, don't monitor it.
+ if (device->classes == 0) {
+ LOGV("Dropping device %s %p, id = %d\n", deviceName, device, devid);
+ close(fd);
+ delete device;
+ return -1;
+ }
+
LOGI("New device: path=%s name=%s id=0x%x (of 0x%x) index=%d fd=%d classes=0x%x\n",
deviceName, name, device->id, mNumDevicesById, mFDCount, fd, device->classes);