diff options
author | Eric Laurent <elaurent@google.com> | 2010-08-09 19:52:43 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2010-08-09 19:52:43 -0700 |
commit | bcc4fdd9de1b0f6b645c663f98bda838bd41242d (patch) | |
tree | 6e2ce2c28fe5fba3b8cafd9375244bc6f658632d /media/libmedia | |
parent | 7e361b86f8a02482f1e659134a030eb7212f2c37 (diff) | |
parent | 8569f0d3bf4c6787707e348a7cf73b9c4199cb32 (diff) | |
download | frameworks_av-bcc4fdd9de1b0f6b645c663f98bda838bd41242d.zip frameworks_av-bcc4fdd9de1b0f6b645c663f98bda838bd41242d.tar.gz frameworks_av-bcc4fdd9de1b0f6b645c663f98bda838bd41242d.tar.bz2 |
am 2a6b80bc: Fixed several audio effects problems.
Merge commit '2a6b80bc65c4782b5a7168b300e1dc5ec9f617ee' into gingerbread-plus-aosp
* commit '2a6b80bc65c4782b5a7168b300e1dc5ec9f617ee':
Fixed several audio effects problems.
Diffstat (limited to 'media/libmedia')
-rw-r--r-- | media/libmedia/AudioEffect.cpp | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/media/libmedia/AudioEffect.cpp b/media/libmedia/AudioEffect.cpp index 3cdf48a..0f3e245 100644 --- a/media/libmedia/AudioEffect.cpp +++ b/media/libmedia/AudioEffect.cpp @@ -218,7 +218,7 @@ status_t AudioEffect::setEnabled(bool enabled) return mIEffect->disable(); } } - return INVALID_OPERATION; + return NO_ERROR; } status_t AudioEffect::command(uint32_t cmdCode, @@ -231,7 +231,22 @@ status_t AudioEffect::command(uint32_t cmdCode, return INVALID_OPERATION; } - return mIEffect->command(cmdCode, cmdSize, cmdData, replySize, replyData); + status_t status = mIEffect->command(cmdCode, cmdSize, cmdData, replySize, replyData); + if (status != NO_ERROR) { + return status; + } + status = *(status_t *)replyData; + if (status != NO_ERROR) { + return status; + } + + if (cmdCode == EFFECT_CMD_ENABLE) { + android_atomic_or(1, &mEnabled); + } + if (cmdCode == EFFECT_CMD_DISABLE) { + android_atomic_and(~1, &mEnabled); + } + return status; } @@ -347,7 +362,11 @@ void AudioEffect::enableStatusChanged(bool enabled) { LOGV("enableStatusChanged %p enabled %d mCbf %p", this, enabled, mCbf); if (mStatus == ALREADY_EXISTS) { - mEnabled = enabled; + if (enabled) { + android_atomic_or(1, &mEnabled); + } else { + android_atomic_and(~1, &mEnabled); + } if (mCbf) { mCbf(EVENT_ENABLE_STATUS_CHANGED, mUserData, &enabled); } |