Merge "Issue 4345021: Audio routed to multiple devices..."
This commit is contained in:
@@ -87,6 +87,8 @@ static const nsecs_t kWarningThrottle = seconds(5);
|
||||
// RecordThread loop sleep time upon application overrun or audio HAL read error
|
||||
static const int kRecordThreadSleepUs = 5000;
|
||||
|
||||
static const nsecs_t kSetParametersTimeout = seconds(2);
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
static bool recordingAllowed() {
|
||||
@@ -1032,7 +1034,7 @@ status_t AudioFlinger::ThreadBase::setParameters(const String8& keyValuePairs)
|
||||
mWaitWorkCV.signal();
|
||||
// wait condition with timeout in case the thread loop has exited
|
||||
// before the request could be processed
|
||||
if (mParamCond.waitRelative(mLock, seconds(2)) == NO_ERROR) {
|
||||
if (mParamCond.waitRelative(mLock, kSetParametersTimeout) == NO_ERROR) {
|
||||
status = mParamStatus;
|
||||
mWaitWorkCV.signal();
|
||||
} else {
|
||||
@@ -2349,7 +2351,9 @@ bool AudioFlinger::MixerThread::checkForNewParameters_l()
|
||||
|
||||
mParamStatus = status;
|
||||
mParamCond.signal();
|
||||
mWaitWorkCV.wait(mLock);
|
||||
// wait for condition with time out in case the thread calling ThreadBase::setParameters()
|
||||
// already timed out waiting for the status and will never signal the condition.
|
||||
mWaitWorkCV.waitRelative(mLock, kSetParametersTimeout);
|
||||
}
|
||||
return reconfig;
|
||||
}
|
||||
@@ -2828,7 +2832,9 @@ bool AudioFlinger::DirectOutputThread::checkForNewParameters_l()
|
||||
|
||||
mParamStatus = status;
|
||||
mParamCond.signal();
|
||||
mWaitWorkCV.wait(mLock);
|
||||
// wait for condition with time out in case the thread calling ThreadBase::setParameters()
|
||||
// already timed out waiting for the status and will never signal the condition.
|
||||
mWaitWorkCV.waitRelative(mLock, kSetParametersTimeout);
|
||||
}
|
||||
return reconfig;
|
||||
}
|
||||
@@ -4669,7 +4675,9 @@ bool AudioFlinger::RecordThread::checkForNewParameters_l()
|
||||
|
||||
mParamStatus = status;
|
||||
mParamCond.signal();
|
||||
mWaitWorkCV.wait(mLock);
|
||||
// wait for condition with time out in case the thread calling ThreadBase::setParameters()
|
||||
// already timed out waiting for the status and will never signal the condition.
|
||||
mWaitWorkCV.waitRelative(mLock, kSetParametersTimeout);
|
||||
}
|
||||
return reconfig;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user