summaryrefslogtreecommitdiffstats
path: root/services/audioflinger/AudioFlinger.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'services/audioflinger/AudioFlinger.cpp')
-rw-r--r--services/audioflinger/AudioFlinger.cpp25
1 files changed, 18 insertions, 7 deletions
diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp
index 12cfe9d..d260074 100644
--- a/services/audioflinger/AudioFlinger.cpp
+++ b/services/audioflinger/AudioFlinger.cpp
@@ -1204,7 +1204,15 @@ status_t AudioFlinger::setParameters(audio_io_handle_t ioHandle, const String8&
if (desc != NULL) {
ALOGV("setParameters for mAudioTracks size %d desc %p",mDirectAudioTracks.size(),desc);
desc->stream->common.set_parameters(&desc->stream->common, keyValuePairs.string());
- return NO_ERROR;
+ AudioParameter param = AudioParameter(keyValuePairs);
+ String8 key = String8(AudioParameter::keyRouting);
+ int device;
+ if (param.getInt(key, device) == NO_ERROR) {
+ if(mLPAEffectChain != NULL){
+ mLPAEffectChain->setDevice_l(device);
+ audioConfigChanged_l(AudioSystem::EFFECT_CONFIG_CHANGED, 0, NULL);
+ }
+ }
}
}
#endif
@@ -6169,9 +6177,12 @@ AudioFlinger::DirectAudioTrack::~DirectAudioTrack() {
AudioSystem::releaseOutput(mOutput);
releaseWakeLock();
- if (mPowerManager != 0) {
- sp<IBinder> binder = mPowerManager->asBinder();
- binder->unlinkToDeath(mDeathRecipient);
+ {
+ Mutex::Autolock _l(pmLock);
+ if (mPowerManager != 0) {
+ sp<IBinder> binder = mPowerManager->asBinder();
+ binder->unlinkToDeath(mDeathRecipient);
+ }
}
}
@@ -6234,8 +6245,8 @@ void AudioFlinger::DirectAudioTrack::mute(bool muted) {
}
void AudioFlinger::DirectAudioTrack::setVolume(float left, float right) {
- mOutputDesc->mVolumeLeft = 1.0;
- mOutputDesc->mVolumeRight = 1.0;
+ mOutputDesc->mVolumeLeft = left;
+ mOutputDesc->mVolumeRight = right;
}
int64_t AudioFlinger::DirectAudioTrack::getTimeStamp() {
@@ -6428,8 +6439,8 @@ void AudioFlinger::DirectAudioTrack::releaseWakeLock()
void AudioFlinger::DirectAudioTrack::clearPowerManager()
{
- Mutex::Autolock _l(pmLock);
releaseWakeLock();
+ Mutex::Autolock _l(pmLock);
mPowerManager.clear();
}