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

Commit 47382a2a authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "No need to consider invalid tracks when checking if all active tracks...

Merge "No need to consider invalid tracks when checking if all active tracks are rerouted." into tm-dev am: c3e3d07b

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

Change-Id: I679d46a35f779f13d3e1a81659563c6447808346
parents ccbcd7a2 c3e3d07b
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -438,6 +438,8 @@ public:

    uint32_t getRecommendedMuteDurationMs() const override;

    void setTracksInvalidatedStatusByStrategy(product_strategy_t strategy);

    const sp<IOProfile> mProfile;          // I/O profile this output derives from
    audio_io_handle_t mIoHandle;           // output handle
    uint32_t mLatency;                  //
+9 −0
Original line number Diff line number Diff line
@@ -157,6 +157,14 @@ public:
    }
    uint32_t getActivityCount() const { return mActivityCount; }

    bool isInvalid() const {
        return mIsInvalid;
    }

    void setIsInvalid() {
        mIsInvalid = true;
    }

private:
    const audio_stream_type_t mStream;
    const product_strategy_t mStrategy;
@@ -169,6 +177,7 @@ private:
     * involved in a duplication.
     */
    uint32_t mActivityCount = 0;
    bool mIsInvalid = false;
};

class RecordClientDescriptor: public ClientDescriptor
+8 −0
Original line number Diff line number Diff line
@@ -726,6 +726,14 @@ uint32_t SwAudioOutputDescriptor::getRecommendedMuteDurationMs() const
    return mProfile->recommendedMuteDurationMs;
}

void SwAudioOutputDescriptor::setTracksInvalidatedStatusByStrategy(product_strategy_t strategy) {
    for (const auto &client : getClientIterable()) {
        if (strategy == client->strategy()) {
            client->setIsInvalid();
        }
    }
}

// HwAudioOutputDescriptor implementation
HwAudioOutputDescriptor::HwAudioOutputDescriptor(const sp<SourceClientDescriptor>& source,
                                                 AudioPolicyClientInterface *clientInterface)
+10 −1
Original line number Diff line number Diff line
@@ -6274,6 +6274,12 @@ void AudioPolicyManager::checkOutputForAttributes(const audio_attributes_t &attr
            for (auto stream :  mEngine->getStreamTypesForProductStrategy(psId)) {
                mpClientInterface->invalidateStream(stream);
            }
            for (audio_io_handle_t srcOut : srcOutputs) {
                sp<SwAudioOutputDescriptor> desc = mPreviousOutputs.valueFor(srcOut);
                if (desc == nullptr) continue;

                desc->setTracksInvalidatedStatusByStrategy(psId);
            }
        }
    }
}
@@ -7599,7 +7605,10 @@ bool AudioPolicyManager::areAllActiveTracksRerouted(const sp<SwAudioOutputDescri
        routedDevices.add(device);
    }
    for (const auto& client : activeClients) {
        // TODO: b/175343099 only travel the valid client
        if (client->isInvalid()) {
            // No need to take care about invalidated clients.
            continue;
        }
        sp<DeviceDescriptor> preferredDevice =
                mAvailableOutputDevices.getDeviceFromId(client->preferredDeviceId());
        if (mEngine->getOutputDevicesForAttributes(