diff options
author | Sean McNeil <sean.mcneil@windriver.com> | 2010-09-02 10:08:53 +0700 |
---|---|---|
committer | Sean McNeil <sean.mcneil@windriver.com> | 2010-09-02 10:08:53 +0700 |
commit | 886aa88eb68e691b05a1335564adcf4ac8a925a3 (patch) | |
tree | bc6775bda3c9112f9c1ca0bdf58634c5d1296ca3 | |
parent | 5e4e4671e3f3104bd05b423e71260798598f9353 (diff) | |
download | alsa_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.cpp | 1 |
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); } |