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

Commit 2267cd43 authored by Shraddha Basantwani's avatar Shraddha Basantwani Committed by Mikhail Naganov
Browse files

Audio : Fix a few minor issues with stream switcher class

1. Constructor should forward variable arguments
2. mContext initialization was missing
3. Add nullptr check for addEffect and removeEffect methods

Bug: 264712385
Bug: 286914845
Test: atest VtsHalAudioCoreTargetTest
Change-Id: I4037292bf497be186b26508bd16846886fa4fe55
(cherry picked from commit 035beba2)
Merged-In: I4037292bf497be186b26508bd16846886fa4fe55
parent 29fc7492
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -31,7 +31,9 @@ using aidl::android::media::audio::common::AudioDevice;
namespace aidl::android::hardware::audio::core {

StreamSwitcher::StreamSwitcher(StreamContext* context, const Metadata& metadata)
    : mMetadata(metadata), mStream(new InnerStreamWrapper<StreamStub>(context, mMetadata)) {}
    : mContext(context),
      mMetadata(metadata),
      mStream(new InnerStreamWrapper<StreamStub>(context, mMetadata)) {}

ndk::ScopedAStatus StreamSwitcher::closeCurrentStream(bool validateStreamState) {
    if (!mStream) return ndk::ScopedAStatus::ok();
@@ -100,6 +102,10 @@ ndk::ScopedAStatus StreamSwitcher::setVendorParameters(
}

ndk::ScopedAStatus StreamSwitcher::addEffect(const std::shared_ptr<IEffect>& in_effect) {
    if (in_effect == nullptr) {
        LOG(DEBUG) << __func__ << ": null effect";
        return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_ARGUMENT);
    }
    if (mStream == nullptr) {
        LOG(ERROR) << __func__ << ": stream was closed";
        return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_STATE);
@@ -112,6 +118,10 @@ ndk::ScopedAStatus StreamSwitcher::addEffect(const std::shared_ptr<IEffect>& in_
}

ndk::ScopedAStatus StreamSwitcher::removeEffect(const std::shared_ptr<IEffect>& in_effect) {
    if (in_effect == nullptr) {
        LOG(DEBUG) << __func__ << ": null effect";
        return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_ARGUMENT);
    }
    if (mStream == nullptr) {
        LOG(ERROR) << __func__ << ": stream was closed";
        return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_STATE);
+2 −1
Original line number Diff line number Diff line
@@ -86,7 +86,8 @@ class StreamCommonInterfaceEx : virtual public StreamCommonInterface {
template <typename T>
class InnerStreamWrapper : public T, public StreamCommonInterfaceEx {
  public:
    InnerStreamWrapper(StreamContext* context, const Metadata& metadata) : T(context, metadata) {}
    template <typename... Args>
    InnerStreamWrapper(Args&&... args) : T(std::forward<Args>(args)...) {}
    StreamDescriptor::State getStatePriorToClosing() const override { return mStatePriorToClosing; }

  private: