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

Commit ea0a0849 authored by Atneya Nair's avatar Atneya Nair Committed by Android (Google) Code Review
Browse files

Merge "Add fg playback restriction checks and logging" into main

parents 9b4e1370 6d4d381b
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -395,6 +395,11 @@ public:
    virtual bool isDisabled() const = 0;

    virtual int& fastIndex() = 0;

    // Restricted due to OP_PLAY_AUDIO
    virtual bool isPlaybackRestrictedOp() const = 0;
    // Restricted due to OP_AUDIO_CONTROL_SOFT
    virtual bool isPlaybackRestrictedControl() const = 0;
    virtual bool isPlaybackRestricted() const = 0;

    // Used by thread only
+13 −2
Original line number Diff line number Diff line
@@ -291,9 +291,20 @@ protected:
    bool isDisabled() const final;

    int& fastIndex() final { return mFastIndex; }
    bool isPlaybackRestricted() const final {

    bool isPlaybackRestrictedOp() const final {
        // The monitor is only created for tracks that can be silenced.
        return mOpPlayAudioMonitor ? !mOpPlayAudioMonitor->hasOpPlayAudio() : false; }
        return mOpPlayAudioMonitor ? !mOpPlayAudioMonitor->hasOpPlayAudio() : false;
    }

    bool isPlaybackRestrictedControl() const final {
        return false;
        // return mOpAudioControlSoftMonitor ? !mOpAudioControlSoftMonitor->hasOp() : false;
    }

    bool isPlaybackRestricted() const final {
        return isPlaybackRestrictedOp() || isPlaybackRestrictedControl();
    }

    const sp<AudioTrackServerProxy>& audioTrackServerProxy() const final {
        return mAudioTrackServerProxy;
+18 −12
Original line number Diff line number Diff line
@@ -5891,19 +5891,21 @@ PlaybackThread::mixer_state MixerThread::prepareTracks_l(
                            /*muteState=*/{masterVolume == 0.f,
                                           mStreamTypes[track->streamType()].volume == 0.f,
                                           mStreamTypes[track->streamType()].mute,
                                           track->isPlaybackRestricted(),
                                           track->isPlaybackRestrictedOp(),
                                           vlf == 0.f && vrf == 0.f,
                                           vh == 0.f,
                                           /*muteFromPortVolume=*/false});
                                           /*muteFromPortVolume=*/false,
                                           track->isPlaybackRestrictedControl()});
                } else {
                    track->processMuteEvent_l(mAfThreadCallback->getOrCreateAudioManager(),
                            /*muteState=*/{masterVolume == 0.f,
                                           track->getPortVolume() == 0.f,
                                           /* muteFromStreamMuted= */ false,
                                           track->isPlaybackRestricted(),
                                           track->isPlaybackRestrictedOp(),
                                           vlf == 0.f && vrf == 0.f,
                                           vh == 0.f,
                                           track->getPortMute()});
                                           track->getPortMute(),
                                           track->isPlaybackRestrictedControl()});
                }
                vlf *= volume;
                vrf *= volume;
@@ -6093,19 +6095,21 @@ PlaybackThread::mixer_state MixerThread::prepareTracks_l(
                            /*muteState=*/{masterVolume == 0.f,
                                           mStreamTypes[track->streamType()].volume == 0.f,
                                           mStreamTypes[track->streamType()].mute,
                                           track->isPlaybackRestricted(),
                                           track->isPlaybackRestrictedOp(),
                                           vlf == 0.f && vrf == 0.f,
                                           vh == 0.f,
                                           /*muteFromPortVolume=*/false});
                                           /*muteFromPortVolume=*/false,
                                           track->isPlaybackRestrictedControl()});
                } else {
                    track->processMuteEvent_l(mAfThreadCallback->getOrCreateAudioManager(),
                            /*muteState=*/{masterVolume == 0.f,
                                           track->getPortVolume() == 0.f,
                                           /* muteFromStreamMuted= */ false,
                                           track->isPlaybackRestricted(),
                                           track->isPlaybackRestrictedOp(),
                                           vlf == 0.f && vrf == 0.f,
                                           vh == 0.f,
                                           track->getPortMute()});
                                           track->getPortMute(),
                                           track->isPlaybackRestrictedControl()});
                }
                // now apply the master volume and stream type volume and shaper volume
                vlf *= v * vh;
@@ -6861,10 +6865,11 @@ void DirectOutputThread::processVolume_l(IAfTrack* track, bool lastTrack)
                /*muteState=*/{mMasterMute,
                               mStreamTypes[track->streamType()].volume == 0.f,
                               mStreamTypes[track->streamType()].mute,
                               track->isPlaybackRestricted(),
                               track->isPlaybackRestrictedOp(),
                               clientVolumeMute,
                               shaperVolume == 0.f,
                               /*muteFromPortVolume=*/false});
                               /*muteFromPortVolume=*/false,
                               track->isPlaybackRestrictedControl()});
    } else {
        if (mMasterMute || track->isPlaybackRestricted()) {
            left = right = 0;
@@ -6890,10 +6895,11 @@ void DirectOutputThread::processVolume_l(IAfTrack* track, bool lastTrack)
                /*muteState=*/{mMasterMute,
                               track->getPortVolume() == 0.f,
                               /* muteFromStreamMuted= */ false,
                               track->isPlaybackRestricted(),
                               track->isPlaybackRestrictedOp(),
                               clientVolumeMute,
                               shaperVolume == 0.f,
                               track->getPortMute()});
                               track->getPortMute(),
                               track->isPlaybackRestrictedControl()});
    }

    if (lastTrack) {