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

Commit a2e985ba authored by François Gaffie's avatar François Gaffie Committed by Eric Laurent
Browse files

audio: effect: dispatch command when using device effect proxy



Bug: 268441977
Test: make

Change-Id: I571756ad549e8455226979b32177e22f4d5c66fc
Signed-off-by: default avatarFrançois Gaffie <francois.gaffie@renault.com>
parent 58e73afe
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -3472,6 +3472,23 @@ status_t DeviceEffectProxy::removeEffectFromHal(
    return mManagerCallback->removeEffectFromHal(&mDevicePort, effect);
}

status_t DeviceEffectProxy::command(
        int32_t cmdCode, const std::vector<uint8_t>& cmdData, int32_t maxReplySize,
        std::vector<uint8_t>* reply) {
    Mutex::Autolock _l(mProxyLock);
    status_t status = EffectBase::command(cmdCode, cmdData, maxReplySize, reply);
    if (status == NO_ERROR) {
        for (auto& handle : mEffectHandles) {
            sp<IAfEffectBase> effect = handle.second->effect().promote();
            if (effect != nullptr) {
                status = effect->command(cmdCode, cmdData, maxReplySize, reply);
            }
        }
    }
    ALOGV("%s status %d", __func__, status);
    return status;
}

bool DeviceEffectProxy::isOutput() const {
    if (mDevicePort.id != AUDIO_PORT_HANDLE_NONE) {
        return mDevicePort.role == AUDIO_PORT_ROLE_SINK;
+5 −0
Original line number Diff line number Diff line
@@ -707,6 +707,11 @@ public:
    audio_channel_mask_t channelMask() const final;
    uint32_t channelCount() const final;

    status_t command(int32_t cmdCode,
                     const std::vector<uint8_t>& cmdData,
                     int32_t maxReplySize,
                     std::vector<uint8_t>* reply) final;

    void dump2(int fd, int spaces) const final;

private:
+5 −5
Original line number Diff line number Diff line
@@ -109,6 +109,11 @@ public:
    virtual sp<IAfEffectModule> asEffectModule() = 0;
    virtual sp<IAfDeviceEffectProxy> asDeviceEffectProxy() = 0;

    virtual status_t command(int32_t cmdCode,
            const std::vector<uint8_t>& cmdData,
            int32_t maxReplySize,
            std::vector<uint8_t>* reply) = 0;

    virtual void dump(int fd, const Vector<String16>& args) const = 0;

private:
@@ -117,11 +122,6 @@ private:
    virtual void setSuspended(bool suspended) = 0;
    virtual bool suspended() const = 0;

    virtual status_t command(int32_t cmdCode,
            const std::vector<uint8_t>& cmdData,
            int32_t maxReplySize,
            std::vector<uint8_t>* reply) = 0;

    virtual ssize_t disconnectHandle(IAfEffectHandle *handle, bool unpinIfLast) = 0;
    virtual ssize_t removeHandle_l(IAfEffectHandle *handle) = 0;
    virtual IAfEffectHandle* controlHandle_l() = 0;