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

Commit a7342da2 authored by Andy Hung's avatar Andy Hung Committed by Android (Google) Code Review
Browse files

Merge "AudioFlinger: Use callback to get screen state" into udc-dev-plus-aosp

parents 590dd5e0 da336353
Loading
Loading
Loading
Loading
+2 −4
Original line number Original line Diff line number Diff line
@@ -127,8 +127,6 @@ static constexpr char kAudioServiceName[] = "audio";


nsecs_t AudioFlinger::mStandbyTimeInNsecs = kDefaultStandbyTimeInNsecs;
nsecs_t AudioFlinger::mStandbyTimeInNsecs = kDefaultStandbyTimeInNsecs;


uint32_t AudioFlinger::mScreenState;

// In order to avoid invalidating offloaded tracks each time a Visualizer is turned on and off
// In order to avoid invalidating offloaded tracks each time a Visualizer is turned on and off
// we define a minimum time during which a global effect is considered enabled.
// we define a minimum time during which a global effect is considered enabled.
static const nsecs_t kMinGlobalEffectEnabletimeNs = seconds(7200);
static const nsecs_t kMinGlobalEffectEnabletimeNs = seconds(7200);
@@ -1950,8 +1948,8 @@ status_t AudioFlinger::setParameters(audio_io_handle_t ioHandle, const String8&
        String8 screenState;
        String8 screenState;
        if (param.get(String8(AudioParameter::keyScreenState), screenState) == NO_ERROR) {
        if (param.get(String8(AudioParameter::keyScreenState), screenState) == NO_ERROR) {
            bool isOff = (screenState == AudioParameter::valueOff);
            bool isOff = (screenState == AudioParameter::valueOff);
            if (isOff != (AudioFlinger::mScreenState & 1)) {
            if (isOff != (mScreenState & 1)) {
                AudioFlinger::mScreenState = ((AudioFlinger::mScreenState & ~1) + 2) | isOff;
                mScreenState = ((mScreenState & ~1) + 2) | isOff;
            }
            }
        }
        }
        return final_result;
        return final_result;
+5 −3
Original line number Original line Diff line number Diff line
@@ -428,6 +428,7 @@ private:
    bool streamMute_l(audio_stream_type_t stream) const final { return mStreamTypes[stream].mute; }
    bool streamMute_l(audio_stream_type_t stream) const final { return mStreamTypes[stream].mute; }
    audio_mode_t getMode() const final { return mMode; }
    audio_mode_t getMode() const final { return mMode; }
    bool isLowRamDevice() const final { return mIsLowRamDevice; }
    bool isLowRamDevice() const final { return mIsLowRamDevice; }
    uint32_t getScreenState() const final { return mScreenState; }


    std::optional<media::AudioVibratorInfo> getDefaultVibratorInfo_l() const final;
    std::optional<media::AudioVibratorInfo> getDefaultVibratorInfo_l() const final;
    const sp<IAfPatchPanel>& getPatchPanel() const final { return mPatchPanel; }
    const sp<IAfPatchPanel>& getPatchPanel() const final { return mPatchPanel; }
@@ -570,11 +571,12 @@ public:
    // ro.audio.flinger_standbytime_ms or defaults to kDefaultStandbyTimeInNsecs
    // ro.audio.flinger_standbytime_ms or defaults to kDefaultStandbyTimeInNsecs
    static nsecs_t          mStandbyTimeInNsecs;
    static nsecs_t          mStandbyTimeInNsecs;


private:

    // incremented by 2 when screen state changes, bit 0 == 1 means "off"
    // incremented by 2 when screen state changes, bit 0 == 1 means "off"
    // AudioFlinger::setParameters() updates, other threads read w/o lock
    // AudioFlinger::setParameters() updates with mLock.
    static uint32_t         mScreenState;
    std::atomic_uint32_t mScreenState{};


private:
    void dumpPermissionDenial(int fd, const Vector<String16>& args);
    void dumpPermissionDenial(int fd, const Vector<String16>& args);
    void dumpClients(int fd, const Vector<String16>& args);
    void dumpClients(int fd, const Vector<String16>& args);
    void dumpInternals(int fd, const Vector<String16>& args);
    void dumpInternals(int fd, const Vector<String16>& args);
+1 −0
Original line number Original line Diff line number Diff line
@@ -72,6 +72,7 @@ public:
    virtual audio_mode_t getMode() const = 0;
    virtual audio_mode_t getMode() const = 0;
    virtual bool isLowRamDevice() const = 0;
    virtual bool isLowRamDevice() const = 0;
    virtual bool isAudioPolicyReady() const = 0;  // Effects
    virtual bool isAudioPolicyReady() const = 0;  // Effects
    virtual uint32_t getScreenState() const = 0;
    virtual std::optional<media::AudioVibratorInfo> getDefaultVibratorInfo_l() const = 0;
    virtual std::optional<media::AudioVibratorInfo> getDefaultVibratorInfo_l() const = 0;
    virtual const sp<IAfPatchPanel>& getPatchPanel() const = 0;
    virtual const sp<IAfPatchPanel>& getPatchPanel() const = 0;
    virtual const sp<MelReporter>& getMelReporter() const = 0;
    virtual const sp<MelReporter>& getMelReporter() const = 0;
+2 −2
Original line number Original line Diff line number Diff line
@@ -2089,7 +2089,7 @@ PlaybackThread::PlaybackThread(const sp<IAfThreadCallback>& afThreadCallback,
        mUseAsyncWrite(false),
        mUseAsyncWrite(false),
        mWriteAckSequence(0),
        mWriteAckSequence(0),
        mDrainSequence(0),
        mDrainSequence(0),
        mScreenState(AudioFlinger::mScreenState),
        mScreenState(mAfThreadCallback->getScreenState()),
        // index 0 is reserved for normal mixer's submix
        // index 0 is reserved for normal mixer's submix
        mFastTrackAvailMask(((1 << FastMixerState::sMaxFastTracks) - 1) & ~1),
        mFastTrackAvailMask(((1 << FastMixerState::sMaxFastTracks) - 1) & ~1),
        mHwSupportsPause(false), mHwPaused(false), mFlushPending(false),
        mHwSupportsPause(false), mHwPaused(false), mFlushPending(false),
@@ -3422,7 +3422,7 @@ ssize_t PlaybackThread::threadLoop_write()


        ATRACE_BEGIN("write");
        ATRACE_BEGIN("write");
        // update the setpoint when AudioFlinger::mScreenState changes
        // update the setpoint when AudioFlinger::mScreenState changes
        uint32_t screenState = AudioFlinger::mScreenState;
        const uint32_t screenState = mAfThreadCallback->getScreenState();
        if (screenState != mScreenState) {
        if (screenState != mScreenState) {
            mScreenState = screenState;
            mScreenState = screenState;
            MonoPipe *pipe = (MonoPipe *)mPipeSink.get();
            MonoPipe *pipe = (MonoPipe *)mPipeSink.get();