diff options
author | Sean McNeil <sean.mcneil@windriver.com> | 2010-06-23 16:00:37 +0700 |
---|---|---|
committer | Jean-Baptiste Queru <jbq@google.com> | 2010-08-23 12:54:30 -0700 |
commit | 40a87586761450f80ad44f948a35266e87f326de (patch) | |
tree | 7691215d9021aaec36463e321985db6223928b6f | |
parent | e7731f0a7f824add1fffa391965cbfeaf7cb2cf2 (diff) | |
download | base-40a87586761450f80ad44f948a35266e87f326de.tar.gz |
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
-rw-r--r-- | libs/ui/EventHub.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/libs/ui/EventHub.cpp b/libs/ui/EventHub.cpp index 076e1d9804c5..2d4c2e213d8a 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); |