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

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

surfaceflinger: remove SurfaceFlingerConsumer

Move everything into the base class, BufferLayerConsumer.

Test: boots
Change-Id: I62cd88d1bd0c7686f8c44e7b70cf216ffc2fba89
parent 67dcc69b
Loading
Loading
Loading
Loading
+0 −1
Original line number Original line Diff line number Diff line
@@ -22,7 +22,6 @@ LOCAL_SRC_FILES := \
    MessageQueue.cpp \
    MessageQueue.cpp \
    MonitoredProducer.cpp \
    MonitoredProducer.cpp \
    SurfaceFlinger.cpp \
    SurfaceFlinger.cpp \
    SurfaceFlingerConsumer.cpp \
    SurfaceInterceptor.cpp \
    SurfaceInterceptor.cpp \
    SurfaceTracing.cpp \
    SurfaceTracing.cpp \
    Transform.cpp \
    Transform.cpp \
+2 −2
Original line number Original line Diff line number Diff line
@@ -435,7 +435,7 @@ Region BufferLayer::latchBuffer(bool& recomputeVisibleRegions, nsecs_t latchTime
        // layer update so we check again at the next opportunity.
        // layer update so we check again at the next opportunity.
        mFlinger->signalLayerUpdate();
        mFlinger->signalLayerUpdate();
        return outDirtyRegion;
        return outDirtyRegion;
    } else if (updateResult == SurfaceFlingerConsumer::BUFFER_REJECTED) {
    } else if (updateResult == BufferLayerConsumer::BUFFER_REJECTED) {
        // If the buffer has been rejected, remove it from the shadow queue
        // If the buffer has been rejected, remove it from the shadow queue
        // and return early
        // and return early
        if (queuedBuffer) {
        if (queuedBuffer) {
@@ -660,7 +660,7 @@ void BufferLayer::onFirstRef() {
    sp<IGraphicBufferConsumer> consumer;
    sp<IGraphicBufferConsumer> consumer;
    BufferQueue::createBufferQueue(&producer, &consumer, true);
    BufferQueue::createBufferQueue(&producer, &consumer, true);
    mProducer = new MonitoredProducer(producer, mFlinger, this);
    mProducer = new MonitoredProducer(producer, mFlinger, this);
    mSurfaceFlingerConsumer = new SurfaceFlingerConsumer(consumer, mTextureName, this);
    mSurfaceFlingerConsumer = new BufferLayerConsumer(consumer, mTextureName, this);
    mSurfaceFlingerConsumer->setConsumerUsageBits(getEffectiveUsage(0));
    mSurfaceFlingerConsumer->setConsumerUsageBits(getEffectiveUsage(0));
    mSurfaceFlingerConsumer->setContentsChangedListener(this);
    mSurfaceFlingerConsumer->setContentsChangedListener(this);
    mSurfaceFlingerConsumer->setName(mName);
    mSurfaceFlingerConsumer->setName(mName);
+5 −5
Original line number Original line Diff line number Diff line
@@ -16,6 +16,7 @@


#pragma once
#pragma once


#include "BufferLayerConsumer.h"
#include "Client.h"
#include "Client.h"
#include "Layer.h"
#include "Layer.h"
#include "DisplayHardware/HWComposer.h"
#include "DisplayHardware/HWComposer.h"
@@ -26,7 +27,6 @@
#include "RenderEngine/Mesh.h"
#include "RenderEngine/Mesh.h"
#include "RenderEngine/Texture.h"
#include "RenderEngine/Texture.h"
#include "SurfaceFlinger.h"
#include "SurfaceFlinger.h"
#include "SurfaceFlingerConsumer.h"
#include "Transform.h"
#include "Transform.h"


#include <gui/ISurfaceComposerClient.h>
#include <gui/ISurfaceComposerClient.h>
@@ -48,13 +48,13 @@
namespace android {
namespace android {


/*
/*
 * A new BufferQueue and a new SurfaceFlingerConsumer are created when the
 * A new BufferQueue and a new BufferLayerConsumer are created when the
 * BufferLayer is first referenced.
 * BufferLayer is first referenced.
 *
 *
 * This also implements onFrameAvailable(), which notifies SurfaceFlinger
 * This also implements onFrameAvailable(), which notifies SurfaceFlinger
 * that new data has arrived.
 * that new data has arrived.
 */
 */
class BufferLayer : public Layer, public SurfaceFlingerConsumer::ContentsChangedListener {
class BufferLayer : public Layer, public BufferLayerConsumer::ContentsChangedListener {
public:
public:
    BufferLayer(SurfaceFlinger* flinger, const sp<Client>& client, const String8& name, uint32_t w,
    BufferLayer(SurfaceFlinger* flinger, const sp<Client>& client, const String8& name, uint32_t w,
                uint32_t h, uint32_t flags);
                uint32_t h, uint32_t flags);
@@ -137,7 +137,7 @@ private:
    void onFirstRef() override;
    void onFirstRef() override;


    // Interface implementation for
    // Interface implementation for
    // SurfaceFlingerConsumer::ContentsChangedListener
    // BufferLayerConsumer::ContentsChangedListener
    void onFrameAvailable(const BufferItem& item) override;
    void onFrameAvailable(const BufferItem& item) override;
    void onFrameReplaced(const BufferItem& item) override;
    void onFrameReplaced(const BufferItem& item) override;
    void onSidebandStreamChanged() override;
    void onSidebandStreamChanged() override;
@@ -170,7 +170,7 @@ public:
    sp<IGraphicBufferProducer> getProducer() const;
    sp<IGraphicBufferProducer> getProducer() const;


private:
private:
    sp<SurfaceFlingerConsumer> mSurfaceFlingerConsumer;
    sp<BufferLayerConsumer> mSurfaceFlingerConsumer;


    // Check all of the local sync points to ensure that all transactions
    // Check all of the local sync points to ensure that all transactions
    // which need to have been applied prior to the frame which is about to
    // which need to have been applied prior to the frame which is about to
+10 −0
Original line number Original line Diff line number Diff line
@@ -270,6 +270,11 @@ status_t BufferLayerConsumer::updateTexImage(BufferRejecter* rejecter, const Dis
    return err;
    return err;
}
}


status_t BufferLayerConsumer::bindTextureImage() {
    Mutex::Autolock lock(mMutex);
    return bindTextureImageLocked();
}

void BufferLayerConsumer::setReleaseFence(const sp<Fence>& fence) {
void BufferLayerConsumer::setReleaseFence(const sp<Fence>& fence) {
    if (!fence->isValid()) {
    if (!fence->isValid()) {
        return;
        return;
@@ -304,6 +309,11 @@ bool BufferLayerConsumer::releasePendingBuffer() {
    return true;
    return true;
}
}


sp<Fence> BufferLayerConsumer::getPrevFinalReleaseFence() const {
    Mutex::Autolock lock(mMutex);
    return ConsumerBase::mPrevFinalReleaseFence;
}

status_t BufferLayerConsumer::acquireBufferLocked(BufferItem* item, nsecs_t presentWhen,
status_t BufferLayerConsumer::acquireBufferLocked(BufferItem* item, nsecs_t presentWhen,
                                                  uint64_t maxFrameNumber) {
                                                  uint64_t maxFrameNumber) {
    status_t err = ConsumerBase::acquireBufferLocked(item, presentWhen, maxFrameNumber);
    status_t err = ConsumerBase::acquireBufferLocked(item, presentWhen, maxFrameNumber);
+5 −0
Original line number Original line Diff line number Diff line
@@ -96,6 +96,9 @@ public:
    status_t updateTexImage(BufferRejecter* rejecter, const DispSync& dispSync, bool* autoRefresh,
    status_t updateTexImage(BufferRejecter* rejecter, const DispSync& dispSync, bool* autoRefresh,
                            bool* queuedBuffer, uint64_t maxFrameNumber);
                            bool* queuedBuffer, uint64_t maxFrameNumber);


    // See BufferLayerConsumer::bindTextureImageLocked().
    status_t bindTextureImage();

    // setReleaseFence stores a fence that will signal when the current buffer
    // setReleaseFence stores a fence that will signal when the current buffer
    // is no longer being read. This fence will be returned to the producer
    // is no longer being read. This fence will be returned to the producer
    // when the current buffer is released by updateTexImage(). Multiple
    // when the current buffer is released by updateTexImage(). Multiple
@@ -105,6 +108,8 @@ public:


    bool releasePendingBuffer();
    bool releasePendingBuffer();


    sp<Fence> getPrevFinalReleaseFence() const;

    // getTransformMatrix retrieves the 4x4 texture coordinate transform matrix
    // getTransformMatrix retrieves the 4x4 texture coordinate transform matrix
    // associated with the texture image set by the most recent call to
    // associated with the texture image set by the most recent call to
    // updateTexImage.
    // updateTexImage.
Loading