Revert "EffectChain setVolume_l with EffectChainmutex held"
This reverts commit a4cc45f86037ef7e7832624f9bc7ab9e84556d15.
Reason for revert: Potential culprit for b/320532190 - verifying through ABTD before revert submission. This is part of the standard investigation process, and does not mean your CL will be reverted.
Change-Id: Ic4d90b958b37e331d9cbdd11c53ebb6e497ef499
diff --git a/services/audioflinger/Effects.cpp b/services/audioflinger/Effects.cpp
index 4cfbdba..3147433 100644
--- a/services/audioflinger/Effects.cpp
+++ b/services/audioflinger/Effects.cpp
@@ -2574,13 +2574,8 @@
return false;
}
-bool EffectChain::setVolume_l(uint32_t* left, uint32_t* right, bool force) {
- audio_utils::lock_guard _l(mutex());
- return setVolume_ll(left, right, force);
-}
-
-// setVolume_l() must be called with IAfThreadBase::mutex() and EffectChain::mutex() held
-bool EffectChain::setVolume_ll(uint32_t *left, uint32_t *right, bool force)
+// setVolume_l() must be called with IAfThreadBase::mutex() or EffectChain::mutex() held
+bool EffectChain::setVolume_l(uint32_t *left, uint32_t *right, bool force)
{
uint32_t newLeft = *left;
uint32_t newRight = *right;
diff --git a/services/audioflinger/Effects.h b/services/audioflinger/Effects.h
index 1097b56..8583d47 100644
--- a/services/audioflinger/Effects.h
+++ b/services/audioflinger/Effects.h
@@ -401,7 +401,7 @@
public:
EffectChain(const sp<IAfThreadBase>& thread, audio_session_t sessionId);
- void process_l() final REQUIRES(audio_utils::ThreadBase_Mutex);
+ void process_l() final;
audio_utils::mutex& mutex() const final { return mMutex; }
@@ -423,11 +423,8 @@
std::vector<int> getEffectIds() const final;
// FIXME use float to improve the dynamic range
- bool setVolume_l(uint32_t* left, uint32_t* right, bool force = false) final
- REQUIRES(audio_utils::ThreadBase_Mutex) EXCLUDES_EffectChain_Mutex;
- bool setVolume_ll(uint32_t* left, uint32_t* right, bool force = false) final
- REQUIRES(audio_utils::ThreadBase_Mutex, mutex());
- void resetVolume_l() final REQUIRES(audio_utils::ThreadBase_Mutex);
+ bool setVolume_l(uint32_t *left, uint32_t *right, bool force = false) final;
+ void resetVolume_l() final;
void setDevices_l(const AudioDeviceTypeAddrVector &devices) final;
void setInputDevice_l(const AudioDeviceTypeAddr &device) final;
void setMode_l(audio_mode_t mode) final;
@@ -573,7 +570,7 @@
// check if effects should be suspended/restored when a given effect is enable/disabled
void checkSuspendOnEffectEnabled(const sp<IAfEffectBase>& effect,
bool enabled, bool threadLocked) override;
- void resetVolume() override REQUIRES(audio_utils::ThreadBase_Mutex);
+ void resetVolume() override;
product_strategy_t strategy() const override;
int32_t activeTrackCnt() const override;
void onEffectEnable(const sp<IAfEffectBase>& effect) override;
@@ -748,7 +745,7 @@
void checkSuspendOnEffectEnabled(const sp<IAfEffectBase>& effect __unused,
bool enabled __unused, bool threadLocked __unused) override {}
- void resetVolume() override REQUIRES(audio_utils::ThreadBase_Mutex) {}
+ void resetVolume() override {}
product_strategy_t strategy() const override { return static_cast<product_strategy_t>(0); }
int32_t activeTrackCnt() const override { return 0; }
void onEffectEnable(const sp<IAfEffectBase>& effect __unused) override;
diff --git a/services/audioflinger/IAfEffect.h b/services/audioflinger/IAfEffect.h
index bc01a75..56076a3 100644
--- a/services/audioflinger/IAfEffect.h
+++ b/services/audioflinger/IAfEffect.h
@@ -241,10 +241,7 @@
virtual sp<IAfEffectModule> getEffectFromId_l(int id) const = 0;
virtual sp<IAfEffectModule> getEffectFromType_l(const effect_uuid_t *type) const = 0;
virtual std::vector<int> getEffectIds() const = 0;
- virtual bool setVolume_l(uint32_t* left, uint32_t* right, bool force = false)
- REQUIRES(audio_utils::ThreadBase_Mutex) EXCLUDES_EffectChain_Mutex = 0;
- virtual bool setVolume_ll(uint32_t* left, uint32_t* right, bool force = false)
- REQUIRES(audio_utils::ThreadBase_Mutex, audio_utils::EffectChain_Mutex) = 0;
+ virtual bool setVolume_l(uint32_t *left, uint32_t *right, bool force = false) = 0;
virtual void resetVolume_l() = 0;
virtual void setDevices_l(const AudioDeviceTypeAddrVector &devices) = 0;
virtual void setInputDevice_l(const AudioDeviceTypeAddr &device) = 0;
diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp
index 67a0bd1..244a262 100644
--- a/services/audioflinger/Threads.cpp
+++ b/services/audioflinger/Threads.cpp
@@ -5497,7 +5497,6 @@
if (masterMute) {
masterVolume = 0;
}
-
// Delegate master volume control to effect in output mix effect chain if needed
sp<IAfEffectChain> chain = getEffectChain_l(AUDIO_SESSION_OUTPUT_MIX);
if (chain != 0) {
@@ -5837,7 +5836,7 @@
mixedTracks++;
- // track->mainBuffer() != mSinkBuffer and mMixerBuffer means
+ // track->mainBuffer() != mSinkBuffer or mMixerBuffer means
// there is an effect chain connected to the track
chain.clear();
if (track->mainBuffer() != mSinkBuffer &&