Make LayerDim a regular Layer instead of a LayerBase
this is in preparation to get rid of LayerBase entirely
Change-Id: Ia051949fc5205fd87371331145356ee11598a597
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 @@
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 @@
// ---------------------------------------------------------------------------
LayerDim::LayerDim(SurfaceFlinger* flinger, const sp<Client>& client)
- : LayerBase(flinger, client)
+ : Layer(flinger, client)
{
}
@@ -71,6 +71,25 @@
}
}
+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 @@
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();
};
// ---------------------------------------------------------------------------