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

Commit 3228b2d2 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add an API to query audio server death count."

parents 3e9ed60e 351e288d
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -91,6 +91,13 @@ AAUDIO_API aaudio_policy_t AAudio_getMMapPolicy();
 */
AAUDIO_API bool AAudioStream_isMMapUsed(AAudioStream* stream);

/**
 * Returns the count of audio server death.
 *
 * @return audio server death count.
 */
AAUDIO_API int AAudio_getAudioServerDeathCount();

#ifdef __cplusplus
}
#endif
+5 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@

#include <aaudio/AAudio.h>
#include <aaudio/AAudioTesting.h>
#include <media/AudioSystem.h>
#include "AudioClock.h"
#include "AudioGlobal.h"
#include "AudioStreamBuilder.h"
@@ -604,3 +605,7 @@ AAUDIO_API aaudio_channel_mask_t AAudioStream_getChannelMask(AAudioStream* strea
    // Do not return channel index masks as they are not public.
    return AAudio_isChannelIndexMask(channelMask) ? AAUDIO_UNSPECIFIED : channelMask;
}

AAUDIO_API int AAudio_getAudioServerDeathCount() {
    return android::AudioSystem::getAudioFlingerDeathCount();
}
+1 −0
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@ LIBAAUDIO {
    AAudio_convertResultToText;
    AAudio_convertStreamStateToText;
    AAudio_createStreamBuilder;
    AAudio_getAudioServerDeathCount;    # introduced=33
    AAudio_getMMapPolicy;
    AAudio_setMMapPolicy;
    AAudioStreamBuilder_setPerformanceMode;
+10 −0
Original line number Diff line number Diff line
@@ -17,6 +17,8 @@
#define LOG_TAG "AudioSystem"
//#define LOG_NDEBUG 0

#include <atomic>

#include <utils/Log.h>

#include <android/media/IAudioPolicyService.h>
@@ -82,6 +84,8 @@ sp<CaptureStateListenerImpl> gSoundTriggerCaptureStateListener = nullptr;
// HotwordDetectionService.
sp<IBinder> gAudioFlingerBinder = nullptr;

std::atomic<int> gAudioFlingerDeathCount{0};

void AudioSystem::setAudioFlingerBinder(const sp<IBinder>& audioFlinger) {
    if (audioFlinger->getInterfaceDescriptor() != media::IAudioFlingerService::descriptor) {
        ALOGE("setAudioFlingerBinder: received a binder of type %s",
@@ -535,6 +539,8 @@ void AudioSystem::AudioFlingerClient::binderDied(const wp<IBinder>& who __unused

    reportError(DEAD_OBJECT);

    gAudioFlingerDeathCount += 1;

    ALOGW("AudioFlinger server died!");
}

@@ -2410,6 +2416,10 @@ int32_t AudioSystem::getAAudioHardwareBurstMinUsec() {
    return af->getAAudioHardwareBurstMinUsec();
}

int32_t AudioSystem::getAudioFlingerDeathCount() {
    return gAudioFlingerDeathCount.load();
}

// ---------------------------------------------------------------------------

int AudioSystem::AudioPolicyServiceClient::addAudioPortCallback(
+5 −0
Original line number Diff line number Diff line
@@ -565,6 +565,11 @@ public:
    static status_t getDirectProfilesForAttributes(const audio_attributes_t* attr,
                                            std::vector<audio_profile>* audioProfiles);

    /**
     * @return count of AudioFlinger death.
     */
    static int32_t getAudioFlingerDeathCount();

    // A listener for capture state changes.
    class CaptureStateListener : public virtual RefBase {
    public: