diff options
author | Mathias Agopian <mathias@google.com> | 2013-03-05 15:50:58 -0800 |
---|---|---|
committer | Mathias Agopian <mathias@google.com> | 2013-03-05 19:52:30 -0800 |
commit | 2f73af9212487c81d31d07227fa8a2f4abc77638 (patch) | |
tree | 476146c481098bc1f33a7cd4a1885362a27d92ff | |
parent | b79f61d41ef053bee1087ec612896c59f95f9686 (diff) | |
download | frameworks_native-2f73af9212487c81d31d07227fa8a2f4abc77638.zip frameworks_native-2f73af9212487c81d31d07227fa8a2f4abc77638.tar.gz frameworks_native-2f73af9212487c81d31d07227fa8a2f4abc77638.tar.bz2 |
Make LayerDim a regular Layer instead of a LayerBase
this is in preparation to get rid of LayerBase entirely
Change-Id: Ia051949fc5205fd87371331145356ee11598a597
-rw-r--r-- | services/surfaceflinger/Layer.h | 2 | ||||
-rw-r--r-- | services/surfaceflinger/LayerDim.cpp | 21 | ||||
-rw-r--r-- | services/surfaceflinger/LayerDim.h | 8 |
3 files changed, 27 insertions, 4 deletions
diff --git a/services/surfaceflinger/Layer.h b/services/surfaceflinger/Layer.h index 25afeef..e9eab17 100644 --- a/services/surfaceflinger/Layer.h +++ b/services/surfaceflinger/Layer.h @@ -68,7 +68,7 @@ public: status_t setBuffers(uint32_t w, uint32_t h, PixelFormat format, uint32_t flags=0); - bool isFixedSize() const; + virtual bool isFixedSize() const; // LayerBase interface virtual void setGeometry(const sp<const DisplayDevice>& hw, diff --git a/services/surfaceflinger/LayerDim.cpp b/services/surfaceflinger/LayerDim.cpp index 24ad706..f8c4139 100644 --- a/services/surfaceflinger/LayerDim.cpp +++ b/services/surfaceflinger/LayerDim.cpp @@ -34,7 +34,7 @@ namespace android { // --------------------------------------------------------------------------- LayerDim::LayerDim(SurfaceFlinger* flinger, const sp<Client>& client) - : LayerBase(flinger, client) + : Layer(flinger, client) { } @@ -71,6 +71,25 @@ void LayerDim::onDraw(const sp<const DisplayDevice>& hw, const Region& clip) con } } +sp<ISurface> LayerDim::createSurface() +{ + class BSurface : public BnSurface, public LayerCleaner { + virtual sp<IGraphicBufferProducer> getSurfaceTexture() const { return 0; } + public: + BSurface(const sp<SurfaceFlinger>& flinger, + const sp<LayerBase>& layer) + : LayerCleaner(flinger, layer) { } + }; + sp<ISurface> sur(new BSurface(mFlinger, this)); + return sur; +} + +bool LayerDim::isVisible() const { + const Layer::State& s(mDrawingState); + return !(s.flags & layer_state_t::eLayerHidden) && s.alpha; +} + + // --------------------------------------------------------------------------- }; // namespace android diff --git a/services/surfaceflinger/LayerDim.h b/services/surfaceflinger/LayerDim.h index 5cdfafc..e1ea9bd 100644 --- a/services/surfaceflinger/LayerDim.h +++ b/services/surfaceflinger/LayerDim.h @@ -23,13 +23,13 @@ #include <EGL/egl.h> #include <EGL/eglext.h> -#include "LayerBase.h" +#include "Layer.h" // --------------------------------------------------------------------------- namespace android { -class LayerDim : public LayerBase +class LayerDim : public Layer { public: LayerDim(SurfaceFlinger* flinger, const sp<Client>& client); @@ -41,6 +41,10 @@ public: virtual bool isProtectedByApp() const { return false; } virtual bool isProtectedByDRM() const { return false; } virtual const char* getTypeId() const { return "LayerDim"; } + + virtual bool isFixedSize() const { return true; } + virtual bool isVisible() const; + virtual sp<ISurface> createSurface(); }; // --------------------------------------------------------------------------- |