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

Commit b445375f authored by Andy Hung's avatar Andy Hung
Browse files

Fix potential deadlock between AudioPolicyService and AudioSystem

Bug: 17109761
Change-Id: I315c1c5066f62b05e1c13b04fae1272b5fbce977
parent 2e97b01c
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -582,9 +582,13 @@ const sp<IAudioPolicyService>& AudioSystem::get_audio_policy_service()
        }
        binder->linkToDeath(gAudioPolicyServiceClient);
        gAudioPolicyService = interface_cast<IAudioPolicyService>(binder);
        gAudioPolicyService->registerClient(gAudioPolicyServiceClient);
        gLock.unlock();
        // Registering the client takes the AudioPolicyService lock.
        // Don't hold the AudioSystem lock at the same time.
        gAudioPolicyService->registerClient(gAudioPolicyServiceClient);
    } else {
        // There exists a benign race condition where gAudioPolicyService
        // is set, but gAudioPolicyServiceClient is not yet registered.
        gLock.unlock();
    }
    return gAudioPolicyService;