diff options
author | 2017-11-27 14:32:57 -0800 | |
---|---|---|
committer | 2017-12-11 11:11:27 -0800 | |
commit | c75c44d3e7237facad8b29696260cafaa8b85763 (patch) | |
tree | 1ddefe8d0c19419cf19e6c5103a17f0042dbea1b | |
parent | e1e1187a39ea6fdb752c09f812023b875df01366 (diff) |
surfaceflinger: move SurfaceFlingerConsumer::mLayer
Move mLayer and related methods to the base class,
BufferLayerConsumer.
Test: boots
Change-Id: I835ec0990b5bbdbd2b61444b6fbad700e0cb8c14
-rw-r--r-- | services/surfaceflinger/BufferLayerConsumer.cpp | 21 | ||||
-rw-r--r-- | services/surfaceflinger/BufferLayerConsumer.h | 11 | ||||
-rw-r--r-- | services/surfaceflinger/SurfaceFlingerConsumer.cpp | 16 | ||||
-rw-r--r-- | services/surfaceflinger/SurfaceFlingerConsumer.h | 12 |
4 files changed, 32 insertions, 28 deletions
diff --git a/services/surfaceflinger/BufferLayerConsumer.cpp b/services/surfaceflinger/BufferLayerConsumer.cpp index 938a330de7..ae3c96c48e 100644 --- a/services/surfaceflinger/BufferLayerConsumer.cpp +++ b/services/surfaceflinger/BufferLayerConsumer.cpp @@ -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(); diff --git a/services/surfaceflinger/BufferLayerConsumer.h b/services/surfaceflinger/BufferLayerConsumer.h index 8382b4610a..f8da6bf0ae 100644 --- a/services/surfaceflinger/BufferLayerConsumer.h +++ b/services/surfaceflinger/BufferLayerConsumer.h @@ -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 { diff --git a/services/surfaceflinger/SurfaceFlingerConsumer.cpp b/services/surfaceflinger/SurfaceFlingerConsumer.cpp index 8c42bb6886..769825d24c 100644 --- a/services/surfaceflinger/SurfaceFlingerConsumer.cpp +++ b/services/surfaceflinger/SurfaceFlingerConsumer.cpp @@ -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 diff --git a/services/surfaceflinger/SurfaceFlingerConsumer.h b/services/surfaceflinger/SurfaceFlingerConsumer.h index 1453e3524a..9eb53519a2 100644 --- a/services/surfaceflinger/SurfaceFlingerConsumer.h +++ b/services/surfaceflinger/SurfaceFlingerConsumer.h @@ -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; }; // ---------------------------------------------------------------------------- |