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

Commit 7a4be5bb authored by Andy Hung's avatar Andy Hung Committed by Automerger Merge Worker
Browse files

AudioFlinger: Add memory leak checking for HAL am: 542ae9bf

Original change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1980127

Change-Id: Ib47eda86682e68ccfc7707fb10be72196396b196
parents 1347ba3d 542ae9bf
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -103,6 +103,15 @@ ConversionHelperHidl::ConversionHelperHidl(const char* className)
        : mClassName(className) {
}

// static
void ConversionHelperHidl::argsFromHal(
        const Vector<String16>& args, hidl_vec<hidl_string> *hidlArgs) {
    hidlArgs->resize(args.size());
    for (size_t i = 0; i < args.size(); ++i) {
        (*hidlArgs)[i] = String8(args[i]).c_str();
    }
}

// static
status_t ConversionHelperHidl::analyzeResult(const Result& result) {
    switch (result) {
+3 −0
Original line number Diff line number Diff line
@@ -21,6 +21,8 @@
#include <hidl/HidlSupport.h>
#include <system/audio.h>
#include <utils/String8.h>
#include <utils/String16.h>
#include <utils/Vector.h>

using ::android::hardware::audio::CORE_TYPES_CPP_VERSION::ParameterValue;
using CoreResult = ::android::hardware::audio::CORE_TYPES_CPP_VERSION::Result;
@@ -36,6 +38,7 @@ class ConversionHelperHidl {
    static status_t keysFromHal(const String8& keys, hidl_vec<hidl_string> *hidlKeys);
    static status_t parametersFromHal(const String8& kvPairs, hidl_vec<ParameterValue> *hidlParams);
    static void parametersToHal(const hidl_vec<ParameterValue>& parameters, String8 *values);
    static void argsFromHal(const Vector<String16>& args, hidl_vec<hidl_string> *hidlArgs);

    ConversionHelperHidl(const char* className);

+4 −2
Original line number Diff line number Diff line
@@ -478,11 +478,13 @@ status_t DeviceHalHidl::removeDeviceEffect(
}
#endif

status_t DeviceHalHidl::dump(int fd) {
status_t DeviceHalHidl::dump(int fd, const Vector<String16>& args) {
    if (mDevice == 0) return NO_INIT;
    native_handle_t* hidlHandle = native_handle_create(1, 0);
    hidlHandle->data[0] = fd;
    Return<void> ret = mDevice->debug(hidlHandle, {} /* options */);
    hidl_vec<hidl_string> hidlArgs;
    argsFromHal(args, &hidlArgs);
    Return<void> ret = mDevice->debug(hidlHandle, hidlArgs);
    native_handle_delete(hidlHandle);

    // TODO(b/111997867, b/177271958)  Workaround - remove when fixed.
+1 −1
Original line number Diff line number Diff line
@@ -115,7 +115,7 @@ class DeviceHalHidl : public DeviceHalInterface, public ConversionHelperHidl
    status_t addDeviceEffect(audio_port_handle_t device, sp<EffectHalInterface> effect) override;
    status_t removeDeviceEffect(audio_port_handle_t device, sp<EffectHalInterface> effect) override;

    virtual status_t dump(int fd);
    status_t dump(int fd, const Vector<String16>& args) override;

  private:
    friend class DevicesFactoryHalHidl;
+1 −1
Original line number Diff line number Diff line
@@ -232,7 +232,7 @@ status_t DeviceHalLocal::removeDeviceEffect(
    return INVALID_OPERATION;
}

status_t DeviceHalLocal::dump(int fd) {
status_t DeviceHalLocal::dump(int fd, const Vector<String16>& /* args */) {
    return mDev->dump(mDev, fd);
}

Loading