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

Commit 79b3e526 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: 816548e1

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

Change-Id: I82e595de324933b83125370ce12f4ae9bd8da6b6
parents f3918613 816548e1
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;