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

Commit f708228c 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

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

Change-Id: I7efa988c3c6d7f01d9d50918553ac83d2e7bc8b3
parents 67656958 9aacd0cf
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
@@ -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;