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

Commit 9bc9a12b authored by Anton Ivanov's avatar Anton Ivanov
Browse files

VirtualDisplaySurface: initialize consumer in onFirstRef().

Bug: 393217449
Test: presubmit
Flag: EXEMPT_refactor

Change-Id: I9d9537af5ff6f3068eb5cdaf52918a119afe0107
parent ce48c762
Loading
Loading
Loading
Loading
+12 −4
Original line number Diff line number Diff line
@@ -98,10 +98,6 @@ VirtualDisplaySurface::VirtualDisplaySurface(HWComposer& hwc,
    }
    mOutputFormat = mDefaultOutputFormat;

    ConsumerBase::mName = String8::format("VDS: %s", mDisplayName.c_str());
    mConsumer->setConsumerName(ConsumerBase::mName);
    mConsumer->setConsumerUsageBits(GRALLOC_USAGE_HW_COMPOSER);
    mConsumer->setDefaultBufferSize(sinkWidth, sinkHeight);
    sink->setAsyncMode(true);
    IGraphicBufferProducer::QueueBufferOutput output;
    mSource[SOURCE_SCRATCH]->connect(nullptr, NATIVE_WINDOW_API_EGL, false, &output);
@@ -111,6 +107,18 @@ VirtualDisplaySurface::VirtualDisplaySurface(HWComposer& hwc,
    }
}

void VirtualDisplaySurface::initializeConsumer() {
    ConsumerBase::mName = String8::format("VDS: %s", mDisplayName.c_str());
    mConsumer->setConsumerName(ConsumerBase::mName);
    mConsumer->setConsumerUsageBits(GRALLOC_USAGE_HW_COMPOSER);
    mConsumer->setDefaultBufferSize(mSinkBufferWidth, mSinkBufferHeight);
}

void VirtualDisplaySurface::onFirstRef() {
    ConsumerBase::onFirstRef();
    initializeConsumer();
}

VirtualDisplaySurface::~VirtualDisplaySurface() {
    mSource[SOURCE_SCRATCH]->disconnect(NATIVE_WINDOW_API_EGL);
}
+4 −0
Original line number Diff line number Diff line
@@ -91,6 +91,8 @@ public:
    // any client composition prediction.
    virtual bool supportsCompositionStrategyPrediction() const override { return false; };

    void onFirstRef() override;

private:
    enum Source : size_t {
        SOURCE_SINK = 0,
@@ -100,6 +102,8 @@ private:
        ftl_last = SOURCE_SCRATCH,
    };

    void initializeConsumer();

    virtual ~VirtualDisplaySurface();

    //