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

Commit 50899fb2 authored by Hongguang's avatar Hongguang Committed by Hongguang Chen
Browse files

Fix tuner example crash.

Bug: 195717690
Fix: 195717690
Test: atest VtsHalTvTunerTargetTest
Change-Id: Ie1ac0f12f9802ac55f1e35ff8dc7c0c34ccce086
parent 1e23e773
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -31,7 +31,7 @@ namespace tuner {

#define WAIT_TIMEOUT 3000000000

Demux::Demux(int32_t demuxId, std::shared_ptr<Tuner> tuner) {
Demux::Demux(int32_t demuxId, Tuner* tuner) {
    mDemuxId = demuxId;
    mTuner = tuner;
}
@@ -76,7 +76,7 @@ Demux::~Demux() {
    }

    std::shared_ptr<Filter> filter =
            ndk::SharedRefBase::make<Filter>(in_type, filterId, in_bufferSize, in_cb, ref<Demux>());
            ndk::SharedRefBase::make<Filter>(in_type, filterId, in_bufferSize, in_cb, this);
    if (!filter->createFilterMQ()) {
        *_aidl_return = nullptr;
        return ::ndk::ScopedAStatus::fromServiceSpecificError(
@@ -110,7 +110,7 @@ Demux::~Demux() {
::ndk::ScopedAStatus Demux::openTimeFilter(std::shared_ptr<ITimeFilter>* _aidl_return) {
    ALOGV("%s", __FUNCTION__);

    mTimeFilter = ndk::SharedRefBase::make<TimeFilter>(ref<Demux>());
    mTimeFilter = ndk::SharedRefBase::make<TimeFilter>(this);

    *_aidl_return = mTimeFilter;
    return ::ndk::ScopedAStatus::ok();
@@ -201,8 +201,7 @@ Demux::~Demux() {
    set<int64_t>::iterator it;
    switch (in_type) {
        case DvrType::PLAYBACK:
            mDvrPlayback =
                    ndk::SharedRefBase::make<Dvr>(in_type, in_bufferSize, in_cb, ref<Demux>());
            mDvrPlayback = ndk::SharedRefBase::make<Dvr>(in_type, in_bufferSize, in_cb, this);
            if (!mDvrPlayback->createDvrMQ()) {
                mDvrPlayback = nullptr;
                *_aidl_return = mDvrPlayback;
@@ -223,7 +222,7 @@ Demux::~Demux() {
            *_aidl_return = mDvrPlayback;
            return ::ndk::ScopedAStatus::ok();
        case DvrType::RECORD:
            mDvrRecord = ndk::SharedRefBase::make<Dvr>(in_type, in_bufferSize, in_cb, ref<Demux>());
            mDvrRecord = ndk::SharedRefBase::make<Dvr>(in_type, in_bufferSize, in_cb, this);
            if (!mDvrRecord->createDvrMQ()) {
                mDvrRecord = nullptr;
                *_aidl_return = mDvrRecord;
+2 −2
Original line number Diff line number Diff line
@@ -50,7 +50,7 @@ class Tuner;

class Demux : public BnDemux {
  public:
    Demux(int32_t demuxId, std::shared_ptr<Tuner> tuner);
    Demux(int32_t demuxId, Tuner* tuner);
    ~Demux();

    ::ndk::ScopedAStatus setFrontendDataSource(int32_t in_frontendId) override;
@@ -95,7 +95,7 @@ class Demux : public BnDemux {

  private:
    // Tuner service
    std::shared_ptr<Tuner> mTuner;
    Tuner* mTuner;

    // Frontend source
    std::shared_ptr<Frontend> mFrontend;
+1 −2
Original line number Diff line number Diff line
@@ -31,8 +31,7 @@ namespace tuner {

#define WAIT_TIMEOUT 3000000000

Dvr::Dvr(DvrType type, uint32_t bufferSize, const std::shared_ptr<IDvrCallback>& cb,
         std::shared_ptr<Demux> demux) {
Dvr::Dvr(DvrType type, uint32_t bufferSize, const std::shared_ptr<IDvrCallback>& cb, Demux* demux) {
    mType = type;
    mBufferSize = bufferSize;
    mCallback = cb;
+2 −3
Original line number Diff line number Diff line
@@ -57,8 +57,7 @@ class Tuner;

class Dvr : public BnDvr {
  public:
    Dvr(DvrType type, uint32_t bufferSize, const std::shared_ptr<IDvrCallback>& cb,
        std::shared_ptr<Demux> demux);
    Dvr(DvrType type, uint32_t bufferSize, const std::shared_ptr<IDvrCallback>& cb, Demux* demux);
    ~Dvr();

    ::ndk::ScopedAStatus getQueueDesc(
@@ -88,7 +87,7 @@ class Dvr : public BnDvr {

  private:
    // Demux service
    std::shared_ptr<Demux> mDemux;
    Demux* mDemux;

    DvrType mType;
    uint32_t mBufferSize;
+1 −1
Original line number Diff line number Diff line
@@ -37,7 +37,7 @@ namespace tuner {
Filter::Filter() {}

Filter::Filter(DemuxFilterType type, int64_t filterId, uint32_t bufferSize,
               const std::shared_ptr<IFilterCallback>& cb, std::shared_ptr<Demux> demux) {
               const std::shared_ptr<IFilterCallback>& cb, Demux* demux) {
    mType = type;
    mFilterId = filterId;
    mBufferSize = bufferSize;
Loading