summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libaudio2/AudioHardware.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/libaudio2/AudioHardware.cpp b/libaudio2/AudioHardware.cpp
index 3755e23..10409a1 100644
--- a/libaudio2/AudioHardware.cpp
+++ b/libaudio2/AudioHardware.cpp
@@ -28,6 +28,7 @@
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
+#include <sys/resource.h>
#include <dlfcn.h>
#include <fcntl.h>
@@ -311,8 +312,13 @@ status_t AudioHardware::setMode(int mode)
sp<AudioStreamInALSA> spIn;
status_t status;
+ // bump thread priority to speed up mutex acquisition
+ int priority = getpriority(PRIO_PROCESS, 0);
+ setpriority(PRIO_PROCESS, 0, ANDROID_PRIORITY_URGENT_AUDIO);
+
// Mutex acquisition order is always out -> in -> hw
AutoMutex lock(mLock);
+
spOut = mOutput;
while (spOut != 0) {
if (!spOut->checkStandby()) {
@@ -349,6 +355,8 @@ status_t AudioHardware::setMode(int mode)
}
// spIn is not 0 here only if the input is active
+ setpriority(PRIO_PROCESS, 0, priority);
+
int prevMode = mMode;
status = AudioHardwareBase::setMode(mode);
LOGV("setMode() : new %d, old %d", mMode, prevMode);