Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c933c69f authored by Eric Laurent's avatar Eric Laurent Committed by Android (Google) Code Review
Browse files

Merge "audiopolicy service: increase timeout for create audio patch command" into main

parents 19a59612 67fd7fb7
Loading
Loading
Loading
Loading
+7 −1
Original line number Original line Diff line number Diff line
@@ -59,6 +59,10 @@ static const int kDumpLockTimeoutNs = 1 * NANOS_PER_SECOND;


static const nsecs_t kAudioCommandTimeoutNs = seconds(3); // 3 seconds
static const nsecs_t kAudioCommandTimeoutNs = seconds(3); // 3 seconds


// longer timeout for create audio patch to account for specific scenarii
// with Bluetooth devices
static const nsecs_t kPatchAudioCommandTimeoutNs = seconds(4); // 4 seconds

static const String16 sManageAudioPolicyPermission("android.permission.MANAGE_AUDIO_POLICY");
static const String16 sManageAudioPolicyPermission("android.permission.MANAGE_AUDIO_POLICY");


namespace {
namespace {
@@ -2435,7 +2439,9 @@ status_t AudioPolicyService::AudioCommandThread::sendCommand(sp<AudioCommand>& c
    }
    }
    audio_utils::unique_lock ul(command->mMutex);
    audio_utils::unique_lock ul(command->mMutex);
    while (command->mWaitStatus) {
    while (command->mWaitStatus) {
        nsecs_t timeOutNs = kAudioCommandTimeoutNs + milliseconds(delayMs);
        nsecs_t timeOutNs = (command->mCommand == CREATE_AUDIO_PATCH ?
                kPatchAudioCommandTimeoutNs : kAudioCommandTimeoutNs) + milliseconds(delayMs);

        if (command->mCond.wait_for(
        if (command->mCond.wait_for(
                ul, std::chrono::nanoseconds(timeOutNs), getTid()) == std::cv_status::timeout) {
                ul, std::chrono::nanoseconds(timeOutNs), getTid()) == std::cv_status::timeout) {
            command->mStatus = TIMED_OUT;
            command->mStatus = TIMED_OUT;