diff options
-rw-r--r-- | libsensors/LightSensor.cpp | 4 | ||||
-rw-r--r-- | libsensors/LightSensor.h | 1 |
2 files changed, 4 insertions, 1 deletions
diff --git a/libsensors/LightSensor.cpp b/libsensors/LightSensor.cpp index fa08685..750d8cd 100644 --- a/libsensors/LightSensor.cpp +++ b/libsensors/LightSensor.cpp @@ -99,6 +99,7 @@ int LightSensor::setInitialState() { struct input_absinfo absinfo; if (!ioctl(data_fd, EVIOCGABS(EVENT_TYPE_LIGHT), &absinfo)) { mPendingEvent.light = indexToValue(absinfo.value); + mPreviousLight = mPendingEvent.light; mHasPendingEvent = true; } return 0; @@ -135,10 +136,11 @@ int LightSensor::readEvents(sensors_event_t* data, int count) } } else if (type == EV_SYN) { mPendingEvent.timestamp = timevalToNano(event->time); - if (mEnabled) { + if (mEnabled && (mPendingEvent.light != mPreviousLight)) { *data++ = mPendingEvent; count--; numEventReceived++; + mPreviousLight = mPendingEvent.light; } } else { LOGE("LightSensor: unknown event (type=%d, code=%d)", diff --git a/libsensors/LightSensor.h b/libsensors/LightSensor.h index 42158e4..78e781a 100644 --- a/libsensors/LightSensor.h +++ b/libsensors/LightSensor.h @@ -39,6 +39,7 @@ class LightSensor : public SensorBase { int input_sysfs_path_len; int setInitialState(); + float mPreviousLight; float indexToValue(size_t index) const; public: |