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

Commit 5edbca5f authored by Anton Ivanov's avatar Anton Ivanov
Browse files

FrameBufferSurface: initialize ConsumerBase in onFirstRef().

Bug: 393217449
Test: presubmit
Flag: EXEMPT_refactor
Change-Id: I9af2afd0648febd6eb7d303270d1909cb2eb1de2
parent b03b9812
Loading
Loading
Loading
Loading
+12 −5
Original line number Diff line number Diff line
@@ -55,6 +55,7 @@ FramebufferSurface::FramebufferSurface(HWComposer& hwc, PhysicalDisplayId displa
                                       const ui::Size& size, const ui::Size& maxSize)
      : ConsumerBase(producer, consumer),
        mDisplayId(displayId),
        mLimitedSize(limitSize(size)),
        mMaxSize(maxSize),
        mCurrentBufferSlot(-1),
        mCurrentBuffer(),
@@ -65,19 +66,25 @@ FramebufferSurface::FramebufferSurface(HWComposer& hwc, PhysicalDisplayId displa
        mPreviousBuffer() {
    ALOGV("Creating for display %s", to_string(displayId).c_str());

    for (size_t i = 0; i < sizeof(mHwcBufferIds) / sizeof(mHwcBufferIds[0]); ++i) {
        mHwcBufferIds[i] = UINT64_MAX;
    }
}

void FramebufferSurface::initializeConsumer() {
    mName = "FramebufferSurface";
    mConsumer->setConsumerName(mName);
    mConsumer->setConsumerUsageBits(GRALLOC_USAGE_HW_FB |
                                       GRALLOC_USAGE_HW_RENDER |
                                       GRALLOC_USAGE_HW_COMPOSER);
    const auto limitedSize = limitSize(size);
    mConsumer->setDefaultBufferSize(limitedSize.width, limitedSize.height);
    mConsumer->setDefaultBufferSize(mLimitedSize.width, mLimitedSize.height);
    mConsumer->setMaxAcquiredBufferCount(
            SurfaceFlinger::maxFrameBufferAcquiredBuffers - 1);

    for (size_t i = 0; i < sizeof(mHwcBufferIds) / sizeof(mHwcBufferIds[0]); ++i) {
        mHwcBufferIds[i] = UINT64_MAX;
}

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

void FramebufferSurface::resizeBuffers(const ui::Size& newSize) {
+6 −0
Original line number Diff line number Diff line
@@ -54,9 +54,13 @@ public:

    virtual const sp<Fence>& getClientTargetAcquireFence() const override;

    void onFirstRef() override;

private:
    friend class FramebufferSurfaceTest;

    void initializeConsumer();

    // Limits the width and height by the maximum width specified.
    ui::Size limitSize(const ui::Size&);

@@ -71,6 +75,8 @@ private:

    const PhysicalDisplayId mDisplayId;

    const ui::Size mLimitedSize;

    // Framebuffer size has a dimension limitation in pixels based on the graphics capabilities of
    // the device.
    const ui::Size mMaxSize;