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

Commit c75c44d3 authored by Chia-I Wu's avatar Chia-I Wu
Browse files

surfaceflinger: move SurfaceFlingerConsumer::mLayer

Move mLayer and related methods to the base class,
BufferLayerConsumer.

Test: boots
Change-Id: I835ec0990b5bbdbd2b61444b6fbad700e0cb8c14
parent e1e1187a
Loading
Loading
Loading
Loading
+20 −1
Original line number Diff line number Diff line
@@ -21,6 +21,8 @@

#include "BufferLayerConsumer.h"

#include "Layer.h"

#include <inttypes.h>

#include <EGL/egl.h>
@@ -105,7 +107,8 @@ static bool isEglImageCroppable(const Rect& crop) {
    return hasEglAndroidImageCrop() && (crop.left == 0 && crop.top == 0);
}

BufferLayerConsumer::BufferLayerConsumer(const sp<IGraphicBufferConsumer>& bq, uint32_t tex)
BufferLayerConsumer::BufferLayerConsumer(const sp<IGraphicBufferConsumer>& bq, uint32_t tex,
                                         Layer* layer)
      : ConsumerBase(bq, false),
        mCurrentCrop(Rect::EMPTY_RECT),
        mCurrentTransform(0),
@@ -118,6 +121,7 @@ BufferLayerConsumer::BufferLayerConsumer(const sp<IGraphicBufferConsumer>& bq, u
        mDefaultHeight(1),
        mFilteringEnabled(true),
        mTexName(tex),
        mLayer(layer),
        mEglDisplay(EGL_NO_DISPLAY),
        mEglContext(EGL_NO_CONTEXT),
        mCurrentTexture(BufferQueue::INVALID_BUFFER_SLOT) {
@@ -538,6 +542,21 @@ void BufferLayerConsumer::freeBufferLocked(int slotIndex) {
    ConsumerBase::freeBufferLocked(slotIndex);
}

void BufferLayerConsumer::onDisconnect() {
    sp<Layer> l = mLayer.promote();
    if (l.get()) {
        l->onDisconnect();
    }
}

void BufferLayerConsumer::addAndGetFrameTimestamps(const NewFrameEventsEntry* newTimestamps,
                                                   FrameEventHistoryDelta* outDelta) {
    sp<Layer> l = mLayer.promote();
    if (l.get()) {
        l->addAndGetFrameTimestamps(newTimestamps, outDelta);
    }
}

void BufferLayerConsumer::abandonLocked() {
    BLC_LOGV("abandonLocked");
    mCurrentTextureImage.clear();
+10 −1
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@
namespace android {
// ----------------------------------------------------------------------------

class Layer;
class String8;

/*
@@ -58,7 +59,7 @@ public:
    // BufferLayerConsumer constructs a new BufferLayerConsumer object.
    // The tex parameter indicates the name of the OpenGL ES
    // texture to which images are to be streamed.
    BufferLayerConsumer(const sp<IGraphicBufferConsumer>& bq, uint32_t tex);
    BufferLayerConsumer(const sp<IGraphicBufferConsumer>& bq, uint32_t tex, Layer* layer);

    // updateTexImage acquires the most recently queued buffer, and sets the
    // image contents of the target texture to it.
@@ -254,6 +255,11 @@ private:
    // This method must be called with mMutex locked.
    virtual void freeBufferLocked(int slotIndex);

    // IConsumerListener interface
    void onDisconnect() override;
    void addAndGetFrameTimestamps(const NewFrameEventsEntry* newTimestamps,
                                  FrameEventHistoryDelta* outDelta) override;

    // computeCurrentTransformMatrixLocked computes the transform matrix for the
    // current texture.  It uses mCurrentTransform and the current GraphicBuffer
    // to compute this matrix and stores it in mCurrentTransformMatrix.
@@ -332,6 +338,9 @@ private:
    // be bound when updateTexImage is called. It is set at construction time.
    const uint32_t mTexName;

    // The layer for this BufferLayerConsumer
    const wp<Layer> mLayer;

    // EGLSlot contains the information and object references that
    // BufferLayerConsumer maintains about a BufferQueue buffer slot.
    struct EglSlot {
+0 −16
Original line number Diff line number Diff line
@@ -244,22 +244,6 @@ void SurfaceFlingerConsumer::onSidebandStreamChanged() {
    }
}

void SurfaceFlingerConsumer::onDisconnect() {
    sp<Layer> l = mLayer.promote();
    if (l.get()) {
        l->onDisconnect();
    }
}

void SurfaceFlingerConsumer::addAndGetFrameTimestamps(
        const NewFrameEventsEntry* newTimestamps,
        FrameEventHistoryDelta *outDelta) {
    sp<Layer> l = mLayer.promote();
    if (l.get()) {
        l->addAndGetFrameTimestamps(newTimestamps, outDelta);
    }
}

// ---------------------------------------------------------------------------
}; // namespace android
+2 −10
Original line number Diff line number Diff line
@@ -40,8 +40,8 @@ public:

    SurfaceFlingerConsumer(const sp<IGraphicBufferConsumer>& consumer,
            uint32_t tex, Layer* layer)
        : BufferLayerConsumer(consumer, tex),
          mTransformToDisplayInverse(false), mSurfaceDamage(), mLayer(layer)
        : BufferLayerConsumer(consumer, tex, layer),
          mTransformToDisplayInverse(false), mSurfaceDamage()
    {}

    class BufferRejecter {
@@ -82,11 +82,6 @@ public:
    virtual void setReleaseFence(const sp<Fence>& fence) override;
    bool releasePendingBuffer();

    void onDisconnect() override;
    void addAndGetFrameTimestamps(
            const NewFrameEventsEntry* newTimestamps,
            FrameEventHistoryDelta* outDelta) override;

private:
    virtual void onSidebandStreamChanged();

@@ -103,9 +98,6 @@ private:
    // A release that is pending on the receipt of a new release fence from
    // presentDisplay
    PendingRelease mPendingRelease;

    // The layer for this SurfaceFlingerConsumer
    const wp<Layer> mLayer;
};

// ----------------------------------------------------------------------------