Loading include/ui/EventHub.h +10 −4 Original line number Diff line number Diff line Loading @@ -76,6 +76,10 @@ public: status_t scancodeToKeycode(int32_t deviceId, int scancode, int32_t* outKeycode, uint32_t* outFlags) const; // exclude a particular device from opening // this can be used to ignore input devices for sensors void addExcludedDevice(const char* deviceName); // special type codes when devices are added/removed. enum { DEVICE_ADDED = 0x10000000, Loading @@ -91,7 +95,6 @@ public: protected: virtual ~EventHub(); virtual void onFirstRef(); private: bool openPlatformInput(void); Loading Loading @@ -140,6 +143,9 @@ private: struct pollfd *mFDs; int mFDCount; bool mOpened; List<String8> mExcludedDevices; // device ids that report particular switches. #ifdef EV_SW int32_t mSwitches[SW_MAX+1]; Loading libs/ui/EventHub.cpp +27 −8 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ #include <utils/Log.h> #include <utils/Timers.h> #include <utils/threads.h> #include <utils/List.h> #include <utils/Errors.h> #include <stdlib.h> Loading Loading @@ -84,7 +83,7 @@ EventHub::EventHub(void) : mError(NO_INIT), mHaveFirstKeyboard(false), mFirstKeyboardId(0) , mDevicesById(0), mNumDevicesById(0) , mOpeningDevices(0), mClosingDevices(0) , mDevices(0), mFDs(0), mFDCount(0) , mDevices(0), mFDs(0), mFDCount(0), mOpened(false) { acquire_wake_lock(PARTIAL_WAKE_LOCK, WAKE_LOCK_ID); #ifdef EV_SW Loading @@ -101,11 +100,6 @@ EventHub::~EventHub(void) // we should free stuff here... } void EventHub::onFirstRef() { mError = openPlatformInput() ? NO_ERROR : UNKNOWN_ERROR; } status_t EventHub::errorCheck() const { return mError; Loading Loading @@ -269,6 +263,12 @@ status_t EventHub::scancodeToKeycode(int32_t deviceId, int scancode, return NAME_NOT_FOUND; } void EventHub::addExcludedDevice(const char* deviceName) { String8 name(deviceName); mExcludedDevices.push_back(name); } EventHub::device_t* EventHub::getDevice(int32_t deviceId) const { if (deviceId == 0) deviceId = mFirstKeyboardId; Loading Loading @@ -307,6 +307,11 @@ bool EventHub::getEvent(int32_t* outDeviceId, int32_t* outType, // Note that we only allow one caller to getEvent(), so don't need // to do locking here... only when adding/removing devices. if (!mOpened) { mError = openPlatformInput() ? NO_ERROR : UNKNOWN_ERROR; mOpened = true; } while(1) { // First, report any devices that had last been added/removed. Loading Loading @@ -513,6 +518,19 @@ int EventHub::open_device(const char *deviceName) idstr[0] = '\0'; } // check to see if the device is on our excluded list List<String8>::iterator iter = mExcludedDevices.begin(); List<String8>::iterator end = mExcludedDevices.end(); for ( ; iter != end; iter++) { const char* name = *iter; if (strcmp(name, idstr) == 0) { LOGD("ignoring event id %s driver %s\n", deviceName, name); close(fd); fd = -1; return -1; } } int devid = 0; while (devid < mNumDevicesById) { if (mDevicesById[devid].device == NULL) { Loading Loading @@ -763,6 +781,7 @@ int EventHub::read_notify(int nfd) int event_pos = 0; struct inotify_event *event; LOGD("EventHub::read_notify nfd: %d\n", nfd); res = read(nfd, event_buf, sizeof(event_buf)); if(res < (int)sizeof(*event)) { if(errno == EINTR) Loading Loading
include/ui/EventHub.h +10 −4 Original line number Diff line number Diff line Loading @@ -76,6 +76,10 @@ public: status_t scancodeToKeycode(int32_t deviceId, int scancode, int32_t* outKeycode, uint32_t* outFlags) const; // exclude a particular device from opening // this can be used to ignore input devices for sensors void addExcludedDevice(const char* deviceName); // special type codes when devices are added/removed. enum { DEVICE_ADDED = 0x10000000, Loading @@ -91,7 +95,6 @@ public: protected: virtual ~EventHub(); virtual void onFirstRef(); private: bool openPlatformInput(void); Loading Loading @@ -140,6 +143,9 @@ private: struct pollfd *mFDs; int mFDCount; bool mOpened; List<String8> mExcludedDevices; // device ids that report particular switches. #ifdef EV_SW int32_t mSwitches[SW_MAX+1]; Loading
libs/ui/EventHub.cpp +27 −8 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ #include <utils/Log.h> #include <utils/Timers.h> #include <utils/threads.h> #include <utils/List.h> #include <utils/Errors.h> #include <stdlib.h> Loading Loading @@ -84,7 +83,7 @@ EventHub::EventHub(void) : mError(NO_INIT), mHaveFirstKeyboard(false), mFirstKeyboardId(0) , mDevicesById(0), mNumDevicesById(0) , mOpeningDevices(0), mClosingDevices(0) , mDevices(0), mFDs(0), mFDCount(0) , mDevices(0), mFDs(0), mFDCount(0), mOpened(false) { acquire_wake_lock(PARTIAL_WAKE_LOCK, WAKE_LOCK_ID); #ifdef EV_SW Loading @@ -101,11 +100,6 @@ EventHub::~EventHub(void) // we should free stuff here... } void EventHub::onFirstRef() { mError = openPlatformInput() ? NO_ERROR : UNKNOWN_ERROR; } status_t EventHub::errorCheck() const { return mError; Loading Loading @@ -269,6 +263,12 @@ status_t EventHub::scancodeToKeycode(int32_t deviceId, int scancode, return NAME_NOT_FOUND; } void EventHub::addExcludedDevice(const char* deviceName) { String8 name(deviceName); mExcludedDevices.push_back(name); } EventHub::device_t* EventHub::getDevice(int32_t deviceId) const { if (deviceId == 0) deviceId = mFirstKeyboardId; Loading Loading @@ -307,6 +307,11 @@ bool EventHub::getEvent(int32_t* outDeviceId, int32_t* outType, // Note that we only allow one caller to getEvent(), so don't need // to do locking here... only when adding/removing devices. if (!mOpened) { mError = openPlatformInput() ? NO_ERROR : UNKNOWN_ERROR; mOpened = true; } while(1) { // First, report any devices that had last been added/removed. Loading Loading @@ -513,6 +518,19 @@ int EventHub::open_device(const char *deviceName) idstr[0] = '\0'; } // check to see if the device is on our excluded list List<String8>::iterator iter = mExcludedDevices.begin(); List<String8>::iterator end = mExcludedDevices.end(); for ( ; iter != end; iter++) { const char* name = *iter; if (strcmp(name, idstr) == 0) { LOGD("ignoring event id %s driver %s\n", deviceName, name); close(fd); fd = -1; return -1; } } int devid = 0; while (devid < mNumDevicesById) { if (mDevicesById[devid].device == NULL) { Loading Loading @@ -763,6 +781,7 @@ int EventHub::read_notify(int nfd) int event_pos = 0; struct inotify_event *event; LOGD("EventHub::read_notify nfd: %d\n", nfd); res = read(nfd, event_buf, sizeof(event_buf)); if(res < (int)sizeof(*event)) { if(errno == EINTR) Loading