Fix issue 4126225: setMicMute() execution time

The cause is that the thread executing setMicMute() can wait for
several seconds before acquiring the input thread mutex when audio
capture is active.
The fix consists in forcing a sleep of the capture thread when
standby() (called by setMicMute()) wants the mutex.

Applied the same fix to output stream and to setParameters() function.

Change-Id: I3e55670d2aad16b67d44ca8582ed16398143ff6e
diff --git a/libaudio/AudioHardware.cpp b/libaudio/AudioHardware.cpp
index 753c413..2ac7b67 100644
--- a/libaudio/AudioHardware.cpp
+++ b/libaudio/AudioHardware.cpp
@@ -1129,12 +1129,16 @@
 {
     if (mHardware == NULL) return NO_INIT;
 
-    AutoMutex lock(mLock);
+    mSleepReq = true;
+    {
+        AutoMutex lock(mLock);
+        mSleepReq = false;
 
-    { // scope for the AudioHardware lock
-        AutoMutex hwLock(mHardware->lock());
+        { // scope for the AudioHardware lock
+            AutoMutex hwLock(mHardware->lock());
 
-        doStandby_l();
+            doStandby_l();
+        }
     }
 
     return NO_ERROR;
@@ -1246,9 +1250,10 @@
 
     if (mHardware == NULL) return NO_INIT;
 
+    mSleepReq = true;
     {
         AutoMutex lock(mLock);
-
+        mSleepReq = false;
         if (param.getInt(String8(AudioParameter::keyRouting), device) == NO_ERROR)
         {
             if (device != 0) {
@@ -1496,12 +1501,16 @@
 {
     if (mHardware == NULL) return NO_INIT;
 
-    AutoMutex lock(mLock);
+    mSleepReq = true;
+    {
+        AutoMutex lock(mLock);
+        mSleepReq = false;
 
-    { // scope for AudioHardware lock
-        AutoMutex hwLock(mHardware->lock());
+        { // scope for AudioHardware lock
+            AutoMutex hwLock(mHardware->lock());
 
-        doStandby_l();
+            doStandby_l();
+        }
     }
     return NO_ERROR;
 }
@@ -1633,8 +1642,10 @@
 
     if (mHardware == NULL) return NO_INIT;
 
+    mSleepReq = true;
     {
         AutoMutex lock(mLock);
+        mSleepReq = false;
 
         if (param.getInt(String8(AudioParameter::keyInputSource), value) == NO_ERROR) {
             AutoMutex hwLock(mHardware->lock());