Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 653bdbdf authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Check if sensor is accessible on flush" into rvc-dev am: 9aacd0cf am:...

Merge "Check if sensor is accessible on flush" into rvc-dev am: 9aacd0cf am: f708228c am: 935cf8be am: a3f74c0d

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/12091816

Change-Id: Idf940b18809968c9f8cb37546a7151037f668f13
parents 1e16eb58 a3f74c0d
Loading
Loading
Loading
Loading
+10 −5
Original line number Diff line number Diff line
@@ -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(
+3 −2
Original line number Diff line number Diff line
@@ -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
+4 −1
Original line number Diff line number Diff line
@@ -1777,7 +1777,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;