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

Commit 2af67733 authored by Eric Laurent's avatar Eric Laurent
Browse files

audio policy: disable silencing of background UID record

There is a problem when audioserver process restarts where we fail to
reload the list of active UIDs causing silent capture for all apps
until they are restarted.

Bug: 77300296
Bug: 63938985
Test: crash audioserver and check that capture still works.
Change-Id: Ie1a93c496516c1b7208780949054832a8a073044
parent 2ad6e528
Loading
Loading
Loading
Loading
+24 −18
Original line number Diff line number Diff line
@@ -332,16 +332,19 @@ status_t AudioPolicyService::dumpInternals(int fd)

void AudioPolicyService::setRecordSilenced(uid_t uid, bool silenced)
{
    {
        Mutex::Autolock _l(mLock);
        if (mAudioPolicyManager) {
            mAudioPolicyManager->setRecordSilenced(uid, silenced);
        }
    }
    sp<IAudioFlinger> af = AudioSystem::get_audio_flinger();
    if (af) {
        af->setRecordSilenced(uid, silenced);
    }
// FIXME: temporarily disable while investigating issue b/77300296
//    {
//        Mutex::Autolock _l(mLock);
//        if (mAudioPolicyManager) {
//            mAudioPolicyManager->setRecordSilenced(uid, silenced);
//        }
//    }
//    sp<IAudioFlinger> af = AudioSystem::get_audio_flinger();
//    if (af) {
//        af->setRecordSilenced(uid, silenced);
//    }
    (void)uid;
    (void)silenced;
}

status_t AudioPolicyService::dump(int fd, const Vector<String16>& args __unused)
@@ -582,15 +585,18 @@ bool AudioPolicyService::UidPolicy::isUidActive(uid_t uid) {

bool AudioPolicyService::UidPolicy::isUidActiveLocked(uid_t uid) {
    // Non-app UIDs are considered always active
    if (uid < FIRST_APPLICATION_UID) {
// FIXME: temporarily disable while investigating issue b/77300296
//    if (uid < FIRST_APPLICATION_UID) {
//        return true;
//    }
//    auto it = mOverrideUids.find(uid);
//    if (it != mOverrideUids.end()) {
//        return it->second;
//    }
//    return mActiveUids.find(uid) != mActiveUids.end();
    (void)uid;
    return true;
}
    auto it = mOverrideUids.find(uid);
    if (it != mOverrideUids.end()) {
        return it->second;
    }
    return mActiveUids.find(uid) != mActiveUids.end();
}

// -----------  AudioPolicyService::AudioCommandThread implementation ----------