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

Commit 4df78bab authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Merge TQ1A.221205.012" into stage-aosp-master

parents 07ce6d13 a67eff3d
Loading
Loading
Loading
Loading
+1 −5
Original line number Original line Diff line number Diff line
@@ -1067,8 +1067,6 @@ status_t AudioFlinger::createTrack(const media::CreateTrackRequest& _input,
        clientPid = callingPid;
        clientPid = callingPid;
        adjAttributionSource.pid = VALUE_OR_RETURN_STATUS(legacy2aidl_pid_t_int32_t(callingPid));
        adjAttributionSource.pid = VALUE_OR_RETURN_STATUS(legacy2aidl_pid_t_int32_t(callingPid));
    }
    }
    adjAttributionSource = AudioFlinger::checkAttributionSourcePackage(
            adjAttributionSource);


    audio_session_t sessionId = input.sessionId;
    audio_session_t sessionId = input.sessionId;
    if (sessionId == AUDIO_SESSION_ALLOCATE) {
    if (sessionId == AUDIO_SESSION_ALLOCATE) {
@@ -2291,8 +2289,7 @@ status_t AudioFlinger::createRecord(const media::CreateRecordRequest& _input,
                 __func__, callingUid, callingPid, currentPid);
                 __func__, callingUid, callingPid, currentPid);
        adjAttributionSource.pid = VALUE_OR_RETURN_STATUS(legacy2aidl_pid_t_int32_t(callingPid));
        adjAttributionSource.pid = VALUE_OR_RETURN_STATUS(legacy2aidl_pid_t_int32_t(callingPid));
    }
    }
    adjAttributionSource = AudioFlinger::checkAttributionSourcePackage(

            adjAttributionSource);
    // we don't yet support anything other than linear PCM
    // we don't yet support anything other than linear PCM
    if (!audio_is_valid_format(input.config.format) || !audio_is_linear_pcm(input.config.format)) {
    if (!audio_is_valid_format(input.config.format) || !audio_is_linear_pcm(input.config.format)) {
        ALOGE("createRecord() invalid format %#x", input.config.format);
        ALOGE("createRecord() invalid format %#x", input.config.format);
@@ -3925,7 +3922,6 @@ status_t AudioFlinger::createEffect(const media::CreateEffectRequest& request,
        adjAttributionSource.pid = VALUE_OR_RETURN_STATUS(legacy2aidl_pid_t_int32_t(callingPid));
        adjAttributionSource.pid = VALUE_OR_RETURN_STATUS(legacy2aidl_pid_t_int32_t(callingPid));
        currentPid = callingPid;
        currentPid = callingPid;
    }
    }
    adjAttributionSource = AudioFlinger::checkAttributionSourcePackage(adjAttributionSource);


    ALOGV("createEffect pid %d, effectClient %p, priority %d, sessionId %d, io %d, factory %p",
    ALOGV("createEffect pid %d, effectClient %p, priority %d, sessionId %d, io %d, factory %p",
          adjAttributionSource.pid, effectClient.get(), priority, sessionId, io,
          adjAttributionSource.pid, effectClient.get(), priority, sessionId, io,
+6 −4
Original line number Original line Diff line number Diff line
@@ -8315,6 +8315,8 @@ sp<AudioFlinger::RecordThread::RecordTrack> AudioFlinger::RecordThread::createRe
    audio_input_flags_t inputFlags = mInput->flags;
    audio_input_flags_t inputFlags = mInput->flags;
    audio_input_flags_t requestedFlags = *flags;
    audio_input_flags_t requestedFlags = *flags;
    uint32_t sampleRate;
    uint32_t sampleRate;
    AttributionSourceState checkedAttributionSource = AudioFlinger::checkAttributionSourcePackage(
            attributionSource);


    lStatus = initCheck();
    lStatus = initCheck();
    if (lStatus != NO_ERROR) {
    if (lStatus != NO_ERROR) {
@@ -8329,7 +8331,7 @@ sp<AudioFlinger::RecordThread::RecordTrack> AudioFlinger::RecordThread::createRe
    }
    }


    if (maxSharedAudioHistoryMs != 0) {
    if (maxSharedAudioHistoryMs != 0) {
        if (!captureHotwordAllowed(attributionSource)) {
        if (!captureHotwordAllowed(checkedAttributionSource)) {
            lStatus = PERMISSION_DENIED;
            lStatus = PERMISSION_DENIED;
            goto Exit;
            goto Exit;
        }
        }
@@ -8450,16 +8452,16 @@ sp<AudioFlinger::RecordThread::RecordTrack> AudioFlinger::RecordThread::createRe
        Mutex::Autolock _l(mLock);
        Mutex::Autolock _l(mLock);
        int32_t startFrames = -1;
        int32_t startFrames = -1;
        if (!mSharedAudioPackageName.empty()
        if (!mSharedAudioPackageName.empty()
                && mSharedAudioPackageName == attributionSource.packageName
                && mSharedAudioPackageName == checkedAttributionSource.packageName
                && mSharedAudioSessionId == sessionId
                && mSharedAudioSessionId == sessionId
                && captureHotwordAllowed(attributionSource)) {
                && captureHotwordAllowed(checkedAttributionSource)) {
            startFrames = mSharedAudioStartFrames;
            startFrames = mSharedAudioStartFrames;
        }
        }


        track = new RecordTrack(this, client, attr, sampleRate,
        track = new RecordTrack(this, client, attr, sampleRate,
                      format, channelMask, frameCount,
                      format, channelMask, frameCount,
                      nullptr /* buffer */, (size_t)0 /* bufferSize */, sessionId, creatorPid,
                      nullptr /* buffer */, (size_t)0 /* bufferSize */, sessionId, creatorPid,
                      attributionSource, *flags, TrackBase::TYPE_DEFAULT, portId,
                      checkedAttributionSource, *flags, TrackBase::TYPE_DEFAULT, portId,
                      startFrames);
                      startFrames);


        lStatus = track->initCheck();
        lStatus = track->initCheck();
+4 −1
Original line number Original line Diff line number Diff line
@@ -529,7 +529,10 @@ AudioFlinger::PlaybackThread::OpPlayAudioMonitor::createIfNeeded(
            id, attr.flags);
            id, attr.flags);
        return nullptr;
        return nullptr;
    }
    }
    return new OpPlayAudioMonitor(attributionSource, attr.usage, id);

    AttributionSourceState checkedAttributionSource = AudioFlinger::checkAttributionSourcePackage(
            attributionSource);
    return new OpPlayAudioMonitor(checkedAttributionSource, attr.usage, id);
}
}


AudioFlinger::PlaybackThread::OpPlayAudioMonitor::OpPlayAudioMonitor(
AudioFlinger::PlaybackThread::OpPlayAudioMonitor::OpPlayAudioMonitor(
+8 −4
Original line number Original line Diff line number Diff line
@@ -41,8 +41,6 @@


namespace android {
namespace android {


const static size_t kDisconnectTimeoutMs = 2500;

using namespace camera2;
using namespace camera2;


// Interface used by CameraService
// Interface used by CameraService
@@ -252,10 +250,16 @@ status_t Camera2ClientBase<TClientBase>::dumpDevice(


template <typename TClientBase>
template <typename TClientBase>
binder::Status Camera2ClientBase<TClientBase>::disconnect() {
binder::Status Camera2ClientBase<TClientBase>::disconnect() {
    if (mCameraServiceWatchdog != nullptr) {
    if (mCameraServiceWatchdog != nullptr && mDevice != nullptr) {
        // Timer for the disconnect call should be greater than getExpectedInFlightDuration
        // since this duration is used to error handle methods in the disconnect sequence
        // thus allowing existing error handling methods to execute first
        uint64_t maxExpectedDuration =
                ns2ms(mDevice->getExpectedInFlightDuration() + kBufferTimeDisconnectNs);

        // Initialization from hal succeeded, time disconnect.
        // Initialization from hal succeeded, time disconnect.
        return mCameraServiceWatchdog->WATCH_CUSTOM_TIMER(disconnectImpl(),
        return mCameraServiceWatchdog->WATCH_CUSTOM_TIMER(disconnectImpl(),
                kDisconnectTimeoutMs / kCycleLengthMs, kCycleLengthMs);
                maxExpectedDuration / kCycleLengthMs, kCycleLengthMs);
    }
    }
    return disconnectImpl();
    return disconnectImpl();
}
}
+3 −0
Original line number Original line Diff line number Diff line
@@ -132,6 +132,9 @@ public:


protected:
protected:


    // Used for watchdog timeout to monitor disconnect
    static const nsecs_t kBufferTimeDisconnectNs = 3000000000; // 3 sec.

    // The PID provided in the constructor call
    // The PID provided in the constructor call
    pid_t mInitialClientPid;
    pid_t mInitialClientPid;
    bool mOverrideForPerfClass = false;
    bool mOverrideForPerfClass = false;
Loading