summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Nick Pelly <npelly@google.com> 2010-01-20 20:46:35 -0800
committer Android Git Automerger <android-git-automerger@android.com> 2010-01-20 20:46:35 -0800
commit425324e97bba75cd69bb6c81de6248529540e6fe (patch)
treea0503b62d408e089950e00be5a2b8155a2a9c5d4
parentaeeb1a84aae2c7400b2edd90cea8306565225275 (diff)
parente834722f547d13eaa453464502456892c6225e42 (diff)
am e834722f: Merge "Fix failure to open AVRCP input device due to EPERM." into eclair
Merge commit 'e834722f547d13eaa453464502456892c6225e42' into eclair-plus-aosp * commit 'e834722f547d13eaa453464502456892c6225e42': Fix failure to open AVRCP input device due to EPERM.
-rw-r--r--libs/ui/EventHub.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/libs/ui/EventHub.cpp b/libs/ui/EventHub.cpp
index e39a357598a9..4aac455153db 100644
--- a/libs/ui/EventHub.cpp
+++ b/libs/ui/EventHub.cpp
@@ -489,6 +489,7 @@ int EventHub::open_device(const char *deviceName)
{
int version;
int fd;
+ int attempt;
struct pollfd *new_mFDs;
device_t **new_devices;
char **new_device_names;
@@ -500,12 +501,17 @@ int EventHub::open_device(const char *deviceName)
LOGV("Opening device: %s", deviceName);
AutoMutex _l(mLock);
-
- fd = open(deviceName, O_RDWR);
+
+ for (attempt = 0; attempt < 10; attempt++) {
+ fd = open(deviceName, O_RDWR);
+ if (fd >= 0) break;
+ usleep(100);
+ }
if(fd < 0) {
LOGE("could not open %s, %s\n", deviceName, strerror(errno));
return -1;
}
+ LOGV("Opened device: %s (%d failures)", deviceName, attempt);
if(ioctl(fd, EVIOCGVERSION, &version)) {
LOGE("could not get driver version for %s, %s\n", deviceName, strerror(errno));