summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean McNeil <sean.mcneil@windriver.com>2010-09-02 10:08:53 +0700
committerSean McNeil <sean.mcneil@windriver.com>2010-09-02 10:08:53 +0700
commit886aa88eb68e691b05a1335564adcf4ac8a925a3 (patch)
treebc6775bda3c9112f9c1ca0bdf58634c5d1296ca3
parent5e4e4671e3f3104bd05b423e71260798598f9353 (diff)
downloadalsa_sound-886aa88eb68e691b05a1335564adcf4ac8a925a3.tar.gz
Hold lock when doing a route.
Routing can end up closing and re-opening an audio path (alsa_default.cpp). If this happend while audio is being played or recorded, then the handle can become invalid and cause a crash in the ALSA library. Change-Id: I2ab62cec0b8a77abdfb890c2addf7e3f54aca750
-rw-r--r--ALSAStreamOps.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/ALSAStreamOps.cpp b/ALSAStreamOps.cpp
index 0d14971..e450dd0 100644
--- a/ALSAStreamOps.cpp
+++ b/ALSAStreamOps.cpp
@@ -161,6 +161,7 @@ status_t ALSAStreamOps::setParameters(const String8& keyValuePairs)
LOGV("setParameters() %s", keyValuePairs.string());
if (param.getInt(key, device) == NO_ERROR) {
+ AutoMutex lock(mLock);
mParent->mALSADevice->route(mHandle, (uint32_t)device, mParent->mode());
param.remove(key);
}