Loading services/audioflinger/AudioFlinger.cpp +2 −4 Original line number Original line Diff line number Diff line Loading @@ -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); Loading Loading @@ -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; Loading services/audioflinger/AudioFlinger.h +5 −3 Original line number Original line Diff line number Diff line Loading @@ -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; } Loading Loading @@ -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); Loading services/audioflinger/IAfThread.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -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; Loading services/audioflinger/Threads.cpp +2 −2 Original line number Original line Diff line number Diff line Loading @@ -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), Loading Loading @@ -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(); Loading Loading
services/audioflinger/AudioFlinger.cpp +2 −4 Original line number Original line Diff line number Diff line Loading @@ -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); Loading Loading @@ -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; Loading
services/audioflinger/AudioFlinger.h +5 −3 Original line number Original line Diff line number Diff line Loading @@ -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; } Loading Loading @@ -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); Loading
services/audioflinger/IAfThread.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -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; Loading
services/audioflinger/Threads.cpp +2 −2 Original line number Original line Diff line number Diff line Loading @@ -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), Loading Loading @@ -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(); Loading