diff options
Diffstat (limited to 'services/audioflinger/Effects.h')
-rw-r--r-- | services/audioflinger/Effects.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/services/audioflinger/Effects.h b/services/audioflinger/Effects.h index eaf90e7..b87a1fd 100644 --- a/services/audioflinger/Effects.h +++ b/services/audioflinger/Effects.h @@ -318,6 +318,12 @@ public: // At least one non offloadable effect in the chain is enabled bool isNonOffloadableEnabled(); + // use release_cas because we don't care about the observed value, just want to make sure the + // new value is observable. + void forceVolume() { android_atomic_release_cas(false, true, &mForceVolume); } + // use acquire_cas because we are interested in the observed value and + // we are the only observers. + bool isVolumeForced() { return (android_atomic_acquire_cas(true, false, &mForceVolume) == 0); } void dump(int fd, const Vector<String16>& args); @@ -375,4 +381,5 @@ protected: // timeLow fields among effect type UUIDs. // Updated by updateSuspendedSessions_l() only. KeyedVector< int, sp<SuspendedEffectDesc> > mSuspendedEffects; + volatile int32_t mForceVolume; // force next volume command because a new effect was enabled }; |