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

Commit 042baecf authored by Peng Xu's avatar Peng Xu
Browse files

Checking exisitence before calling editValueFor in SensorDevice

Bug: 26320541
Test: compiles, test a few sensor and they all works
Change-Id: If0859e7560419f3955f29ae108f9268d0a2bbaa9
parent 48af4c68
Loading
Loading
Loading
Loading
+18 −3
Original line number Original line Diff line number Diff line
@@ -223,8 +223,13 @@ ssize_t SensorDevice::poll(sensors_event_t* buffer, size_t count) {
}
}


void SensorDevice::autoDisable(void *ident, int handle) {
void SensorDevice::autoDisable(void *ident, int handle) {
    Info& info( mActivationCount.editValueFor(handle) );
    Mutex::Autolock _l(mLock);
    Mutex::Autolock _l(mLock);
    ssize_t activationIndex = mActivationCount.indexOfKey(handle);
    if (activationIndex < 0) {
        ALOGW("Handle %d cannot be found in activation record", handle);
        return;
    }
    Info& info(mActivationCount.editValueAt(activationIndex));
    info.removeBatchParamsForIdent(ident);
    info.removeBatchParamsForIdent(ident);
}
}


@@ -235,7 +240,12 @@ status_t SensorDevice::activate(void* ident, int handle, int enabled) {
    bool actuateHardware = false;
    bool actuateHardware = false;


    Mutex::Autolock _l(mLock);
    Mutex::Autolock _l(mLock);
    Info& info( mActivationCount.editValueFor(handle) );
    ssize_t activationIndex = mActivationCount.indexOfKey(handle);
    if (activationIndex < 0) {
        ALOGW("Handle %d cannot be found in activation record", handle);
        return BAD_VALUE;
    }
    Info& info(mActivationCount.editValueAt(activationIndex));


    ALOGD_IF(DEBUG_CONNECTIONS,
    ALOGD_IF(DEBUG_CONNECTIONS,
             "SensorDevice::activate: ident=%p, handle=0x%08x, enabled=%d, count=%zu",
             "SensorDevice::activate: ident=%p, handle=0x%08x, enabled=%d, count=%zu",
@@ -329,7 +339,12 @@ status_t SensorDevice::batch(
             ident, handle, flags, samplingPeriodNs, maxBatchReportLatencyNs);
             ident, handle, flags, samplingPeriodNs, maxBatchReportLatencyNs);


    Mutex::Autolock _l(mLock);
    Mutex::Autolock _l(mLock);
    Info& info(mActivationCount.editValueFor(handle));
    ssize_t activationIndex = mActivationCount.indexOfKey(handle);
    if (activationIndex < 0) {
        ALOGW("Handle %d cannot be found in activation record", handle);
        return BAD_VALUE;
    }
    Info& info(mActivationCount.editValueAt(activationIndex));


    if (info.batchParams.indexOfKey(ident) < 0) {
    if (info.batchParams.indexOfKey(ident) < 0) {
        BatchParams params(samplingPeriodNs, maxBatchReportLatencyNs);
        BatchParams params(samplingPeriodNs, maxBatchReportLatencyNs);