summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libsensors/LightSensor.cpp4
-rw-r--r--libsensors/LightSensor.h1
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: