Loading services/sensorservice/SensorEventConnection.cpp +10 −5 Original line number Diff line number Diff line Loading @@ -272,12 +272,17 @@ void SensorService::SensorEventConnection::updateLooperRegistrationLocked( } } void SensorService::SensorEventConnection::incrementPendingFlushCount(int32_t handle) { bool SensorService::SensorEventConnection::incrementPendingFlushCountIfHasAccess(int32_t handle) { if (hasSensorAccess()) { Mutex::Autolock _l(mConnectionLock); if (mSensorInfo.count(handle) > 0) { FlushInfo& flushInfo = mSensorInfo[handle]; flushInfo.mPendingFlushEventsToSend++; } return true; } else { return false; } } status_t SensorService::SensorEventConnection::sendEvents( Loading services/sensorservice/SensorEventConnection.h +3 −2 Original line number Diff line number Diff line Loading @@ -116,8 +116,9 @@ private: // for writing send the data from the cache. virtual int handleEvent(int fd, int events, void* data); // Increment mPendingFlushEventsToSend for the given sensor handle. void incrementPendingFlushCount(int32_t handle); // Increment mPendingFlushEventsToSend for the given handle if the connection has sensor access. // Returns true if this connection does have sensor access. bool incrementPendingFlushCountIfHasAccess(int32_t handle); // Add or remove the file descriptor associated with the BitTube to the looper. If mDead is set // to true or there are no more sensors for this connection, the file descriptor is removed if Loading services/sensorservice/SensorService.cpp +4 −1 Original line number Diff line number Diff line Loading @@ -1774,7 +1774,10 @@ status_t SensorService::flushSensor(const sp<SensorEventConnection>& connection, if (halVersion <= SENSORS_DEVICE_API_VERSION_1_0 || isVirtualSensor(handle)) { // For older devices just increment pending flush count which will send a trivial // flush complete event. connection->incrementPendingFlushCount(handle); if (!connection->incrementPendingFlushCountIfHasAccess(handle)) { ALOGE("flush called on an inaccessible sensor"); err = INVALID_OPERATION; } } else { if (!canAccessSensor(sensor->getSensor(), "Tried flushing", opPackageName)) { err = INVALID_OPERATION; Loading Loading
services/sensorservice/SensorEventConnection.cpp +10 −5 Original line number Diff line number Diff line Loading @@ -272,12 +272,17 @@ void SensorService::SensorEventConnection::updateLooperRegistrationLocked( } } void SensorService::SensorEventConnection::incrementPendingFlushCount(int32_t handle) { bool SensorService::SensorEventConnection::incrementPendingFlushCountIfHasAccess(int32_t handle) { if (hasSensorAccess()) { Mutex::Autolock _l(mConnectionLock); if (mSensorInfo.count(handle) > 0) { FlushInfo& flushInfo = mSensorInfo[handle]; flushInfo.mPendingFlushEventsToSend++; } return true; } else { return false; } } status_t SensorService::SensorEventConnection::sendEvents( Loading
services/sensorservice/SensorEventConnection.h +3 −2 Original line number Diff line number Diff line Loading @@ -116,8 +116,9 @@ private: // for writing send the data from the cache. virtual int handleEvent(int fd, int events, void* data); // Increment mPendingFlushEventsToSend for the given sensor handle. void incrementPendingFlushCount(int32_t handle); // Increment mPendingFlushEventsToSend for the given handle if the connection has sensor access. // Returns true if this connection does have sensor access. bool incrementPendingFlushCountIfHasAccess(int32_t handle); // Add or remove the file descriptor associated with the BitTube to the looper. If mDead is set // to true or there are no more sensors for this connection, the file descriptor is removed if Loading
services/sensorservice/SensorService.cpp +4 −1 Original line number Diff line number Diff line Loading @@ -1774,7 +1774,10 @@ status_t SensorService::flushSensor(const sp<SensorEventConnection>& connection, if (halVersion <= SENSORS_DEVICE_API_VERSION_1_0 || isVirtualSensor(handle)) { // For older devices just increment pending flush count which will send a trivial // flush complete event. connection->incrementPendingFlushCount(handle); if (!connection->incrementPendingFlushCountIfHasAccess(handle)) { ALOGE("flush called on an inaccessible sensor"); err = INVALID_OPERATION; } } else { if (!canAccessSensor(sensor->getSensor(), "Tried flushing", opPackageName)) { err = INVALID_OPERATION; Loading