summaryrefslogtreecommitdiffstats
path: root/media/libmedia
diff options
context:
space:
mode:
authorEric Laurent <elaurent@google.com>2010-08-09 19:52:43 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2010-08-09 19:52:43 -0700
commitbcc4fdd9de1b0f6b645c663f98bda838bd41242d (patch)
tree6e2ce2c28fe5fba3b8cafd9375244bc6f658632d /media/libmedia
parent7e361b86f8a02482f1e659134a030eb7212f2c37 (diff)
parent8569f0d3bf4c6787707e348a7cf73b9c4199cb32 (diff)
downloadframeworks_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.cpp25
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);
}