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

Commit 6d4d381b authored by Atneya Nair's avatar Atneya Nair
Browse files

Add fg playback restriction checks and logging

Test: compiles
Bug: 376481063
Flag: EXEMPT mechanical
Change-Id: I222a0933531726041bb24bff11e87028b41f1e2b
parent 6a30ef5d
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) {