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

Commit 8097068d authored by Marco Nelissen's avatar Marco Nelissen Committed by Android (Google) Code Review
Browse files

Merge "Better recording wake lock accounting" into klp-dev

parents 580ed263 e14a5d6d
Loading
Loading
Loading
Loading
+19 −11
Original line number Diff line number Diff line
@@ -476,13 +476,13 @@ void AudioFlinger::ThreadBase::dumpEffectChains(int fd, const Vector<String16>&
    }
}

void AudioFlinger::ThreadBase::acquireWakeLock()
void AudioFlinger::ThreadBase::acquireWakeLock(int uid)
{
    Mutex::Autolock _l(mLock);
    acquireWakeLock_l();
    acquireWakeLock_l(uid);
}

void AudioFlinger::ThreadBase::acquireWakeLock_l()
void AudioFlinger::ThreadBase::acquireWakeLock_l(int uid)
{
    if (mPowerManager == 0) {
        // use checkService() to avoid blocking if power service is not up yet
@@ -497,10 +497,19 @@ void AudioFlinger::ThreadBase::acquireWakeLock_l()
    }
    if (mPowerManager != 0) {
        sp<IBinder> binder = new BBinder();
        status_t status = mPowerManager->acquireWakeLock(POWERMANAGER_PARTIAL_WAKE_LOCK,
        status_t status;
        if (uid >= 0) {
            mPowerManager->acquireWakeLockWithUid(POWERMANAGER_PARTIAL_WAKE_LOCK,
                    binder,
                    String16(mName),
                    String16("media"),
                    uid);
        } else {
            mPowerManager->acquireWakeLock(POWERMANAGER_PARTIAL_WAKE_LOCK,
                    binder,
                    String16(mName),
                    String16("media"));
        }
        if (status == NO_ERROR) {
            mWakeLockToken = binder;
        }
@@ -4283,7 +4292,7 @@ AudioFlinger::RecordThread::RecordThread(const sp<AudioFlinger>& audioFlinger,
    snprintf(mName, kNameLength, "AudioIn_%X", id);

    readInputParameters();

    mClientUid = IPCThreadState::self()->getCallingUid();
}


@@ -4315,7 +4324,7 @@ bool AudioFlinger::RecordThread::threadLoop()
    nsecs_t lastWarning = 0;

    inputStandBy();
    acquireWakeLock();
    acquireWakeLock(mClientUid);

    // used to verify we've read at least once before evaluating how many bytes were read
    bool readOnce = false;
@@ -4340,7 +4349,7 @@ bool AudioFlinger::RecordThread::threadLoop()
                // go to sleep
                mWaitWorkCV.wait(mLock);
                ALOGV("RecordThread: loop starting");
                acquireWakeLock_l();
                acquireWakeLock_l(mClientUid);
                continue;
            }
            if (mActiveTrack != 0) {
@@ -4562,7 +4571,6 @@ sp<AudioFlinger::RecordThread::RecordTrack> AudioFlinger::RecordThread::createR
        ALOGE("Audio driver not initialized.");
        goto Exit;
    }

    // client expresses a preference for FAST, but we get the final say
    if (*flags & IAudioFlinger::TRACK_FAST) {
      if (
+3 −2
Original line number Diff line number Diff line
@@ -237,8 +237,8 @@ protected:
                    effect_uuid_t mType;    // effect type UUID
                };

                void        acquireWakeLock();
                void        acquireWakeLock_l();
                void        acquireWakeLock(int uid = -1);
                void        acquireWakeLock_l(int uid = -1);
                void        releaseWakeLock();
                void        releaseWakeLock_l();
                void setEffectSuspended_l(const effect_uuid_t *type,
@@ -951,4 +951,5 @@ private:

            // For dumpsys
            const sp<NBAIO_Sink>                mTeeSink;
            int                                 mClientUid;
};