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

Commit 7d92f7c8 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add a method to reset circular references in audio flinger service" into aosp-main-future

parents 49995707 fd414a83
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -918,6 +918,11 @@ status_t AudioFlingerClientAdapter::getAudioMixPort(const struct audio_port_v7 *
    return OK;
}

status_t AudioFlingerClientAdapter::resetReferencesForTest() {
    RETURN_STATUS_IF_ERROR(statusTFromBinderStatus(mDelegate->resetReferencesForTest()));
    return OK;
}

////////////////////////////////////////////////////////////////////////////////////////////////////
// AudioFlingerServerAdapter
AudioFlingerServerAdapter::AudioFlingerServerAdapter(
@@ -1476,4 +1481,9 @@ Status AudioFlingerServerAdapter::getAudioMixPort(const media::AudioPortFw &devi
    return Status::ok();
}

Status AudioFlingerServerAdapter::resetReferencesForTest() {
    RETURN_BINDER_IF_ERROR(mDelegate->resetReferencesForTest());
    return Status::ok();
}

} // namespace android
+6 −0
Original line number Diff line number Diff line
@@ -293,6 +293,12 @@ interface IAudioFlingerService {
     */
    AudioPortFw getAudioMixPort(in AudioPortFw devicePort, in AudioPortFw mixPort);

    /*
     * Reset Circular references in AudioFlinger service.
     * Test API
     */
     void resetReferencesForTest();

    // When adding a new method, please review and update
    // IAudioFlinger.h AudioFlingerServerAdapter::Delegate::TransactionCode
    // AudioFlinger.cpp AudioFlinger::onTransactWrapper()
+6 −0
Original line number Diff line number Diff line
@@ -388,6 +388,8 @@ public:

    virtual status_t getAudioMixPort(const struct audio_port_v7 *devicePort,
                                     struct audio_port_v7 *mixPort) const = 0;

    virtual status_t resetReferencesForTest() = 0;
};

/**
@@ -504,6 +506,7 @@ public:
    status_t getAudioPolicyConfig(media::AudioPolicyConfig* output) override;
    status_t getAudioMixPort(const struct audio_port_v7 *devicePort,
                             struct audio_port_v7 *mixPort) const override;
    status_t resetReferencesForTest() override;

private:
    const sp<media::IAudioFlingerService> mDelegate;
@@ -606,6 +609,8 @@ public:
            GET_AUDIO_POLICY_CONFIG =
                    media::BnAudioFlingerService::TRANSACTION_getAudioPolicyConfig,
            GET_AUDIO_MIX_PORT = media::BnAudioFlingerService::TRANSACTION_getAudioMixPort,
            RESET_REFERENCES_FOR_TEST =
                    media::BnAudioFlingerService::TRANSACTION_resetReferencesForTest,
        };

    protected:
@@ -742,6 +747,7 @@ public:
    Status getAudioMixPort(const media::AudioPortFw& devicePort,
                           const media::AudioPortFw& mixPort,
                           media::AudioPortFw* _aidl_return) override;
    Status resetReferencesForTest() override;
private:
    const sp<AudioFlingerServerAdapter::Delegate> mDelegate;
};
+11 −0
Original line number Diff line number Diff line
@@ -193,6 +193,7 @@ BINDER_METHOD_ENTRY(supportsBluetoothVariableLatency) \
BINDER_METHOD_ENTRY(getSoundDoseInterface) \
BINDER_METHOD_ENTRY(getAudioPolicyConfig) \
BINDER_METHOD_ENTRY(getAudioMixPort) \
BINDER_METHOD_ENTRY(resetReferencesForTest) \

// singleton for Binder Method Statistics for IAudioFlinger
static auto& getIAudioFlingerStatistics() {
@@ -466,6 +467,8 @@ AudioFlinger::~AudioFlinger()
            sMediaLogService->unregisterWriter(iMemory);
        }
    }
    mMediaLogNotifier->requestExit();
    mPatchCommandThread->exit();
}

//static
@@ -4804,6 +4807,13 @@ status_t AudioFlinger::getAudioMixPort(const struct audio_port_v7 *devicePort,
    return mPatchPanel->getAudioMixPort_l(devicePort, mixPort);
}

status_t AudioFlinger::resetReferencesForTest() {
    mDeviceEffectManager.clear();
    mPatchPanel.clear();
    mMelReporter->resetReferencesForTest();
    return NO_ERROR;
}

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

status_t AudioFlinger::onTransactWrapper(TransactionCode code,
@@ -4838,6 +4848,7 @@ status_t AudioFlinger::onTransactWrapper(TransactionCode code,
        case TransactionCode::INVALIDATE_TRACKS:
        case TransactionCode::GET_AUDIO_POLICY_CONFIG:
        case TransactionCode::GET_AUDIO_MIX_PORT:
        case TransactionCode::RESET_REFERENCES_FOR_TEST:
            ALOGW("%s: transaction %d received from PID %d",
                  __func__, static_cast<int>(code), IPCThreadState::self()->getCallingPid());
            // return status only for non void methods
+2 −0
Original line number Diff line number Diff line
@@ -61,6 +61,8 @@ class AudioFlinger
public:
    static void instantiate() ANDROID_API;

    status_t resetReferencesForTest();

private:

    // ---- begin IAudioFlinger interface
Loading