Bug 564991. Part 8: Hoist GetLayerType out of individual layer manager types and make it available for all layers. r=jrmuizel,sr=vlad
This commit is contained in:
@@ -198,6 +198,8 @@ public:
|
|||||||
ImageContainer* GetContainer() { return mContainer; }
|
ImageContainer* GetContainer() { return mContainer; }
|
||||||
gfxPattern::GraphicsFilter GetFilter() { return mFilter; }
|
gfxPattern::GraphicsFilter GetFilter() { return mFilter; }
|
||||||
|
|
||||||
|
NS_LAYER_DECL_NAME("ImageLayer", TYPE_IMAGE)
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
ImageLayer(LayerManager* aManager, void* aImplData)
|
ImageLayer(LayerManager* aManager, void* aImplData)
|
||||||
: Layer(aManager, aImplData), mFilter(gfxPattern::FILTER_GOOD) {}
|
: Layer(aManager, aImplData), mFilter(gfxPattern::FILTER_GOOD) {}
|
||||||
|
|||||||
@@ -67,6 +67,15 @@ class ColorLayer;
|
|||||||
class ImageContainer;
|
class ImageContainer;
|
||||||
class CanvasLayer;
|
class CanvasLayer;
|
||||||
|
|
||||||
|
#if defined(DEBUG) || defined(PR_LOGGING)
|
||||||
|
#define NS_LAYER_DECL_NAME(n, e) \
|
||||||
|
virtual const char* Name() { return n; } \
|
||||||
|
virtual LayerType GetType() { return e; }
|
||||||
|
#else
|
||||||
|
#define NS_LAYER_DECL_NAME(n, e) \
|
||||||
|
virtual LayerType GetType() { return e; }
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Motivation: For truly smooth animation and video playback, we need to
|
* Motivation: For truly smooth animation and video playback, we need to
|
||||||
* be able to compose frames and render them on a dedicated thread (i.e.
|
* be able to compose frames and render them on a dedicated thread (i.e.
|
||||||
@@ -237,6 +246,14 @@ class THEBES_API Layer {
|
|||||||
NS_INLINE_DECL_REFCOUNTING(Layer)
|
NS_INLINE_DECL_REFCOUNTING(Layer)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
enum LayerType {
|
||||||
|
TYPE_THEBES,
|
||||||
|
TYPE_CONTAINER,
|
||||||
|
TYPE_IMAGE,
|
||||||
|
TYPE_COLOR,
|
||||||
|
TYPE_CANVAS
|
||||||
|
};
|
||||||
|
|
||||||
virtual ~Layer() {}
|
virtual ~Layer() {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -336,7 +353,12 @@ public:
|
|||||||
* a ThebesLayer.
|
* a ThebesLayer.
|
||||||
*/
|
*/
|
||||||
virtual ThebesLayer* AsThebesLayer() { return nsnull; }
|
virtual ThebesLayer* AsThebesLayer() { return nsnull; }
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
virtual const char* Name() = 0;
|
||||||
|
#endif
|
||||||
|
virtual LayerType GetType() = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Only the implementation should call this. This is per-implementation
|
* Only the implementation should call this. This is per-implementation
|
||||||
* private data. Normally, all layers with a given layer manager
|
* private data. Normally, all layers with a given layer manager
|
||||||
@@ -406,6 +428,8 @@ public:
|
|||||||
|
|
||||||
virtual ThebesLayer* AsThebesLayer() { return this; }
|
virtual ThebesLayer* AsThebesLayer() { return this; }
|
||||||
|
|
||||||
|
NS_LAYER_DECL_NAME("ThebesLayer", TYPE_THEBES)
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
ThebesLayer(LayerManager* aManager, void* aImplData)
|
ThebesLayer(LayerManager* aManager, void* aImplData)
|
||||||
: Layer(aManager, aImplData) {}
|
: Layer(aManager, aImplData) {}
|
||||||
@@ -437,6 +461,8 @@ public:
|
|||||||
// This getter can be used anytime.
|
// This getter can be used anytime.
|
||||||
virtual Layer* GetFirstChild() { return mFirstChild; }
|
virtual Layer* GetFirstChild() { return mFirstChild; }
|
||||||
|
|
||||||
|
NS_LAYER_DECL_NAME("ContainerLayer", TYPE_CONTAINER)
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
ContainerLayer(LayerManager* aManager, void* aImplData)
|
ContainerLayer(LayerManager* aManager, void* aImplData)
|
||||||
: Layer(aManager, aImplData),
|
: Layer(aManager, aImplData),
|
||||||
@@ -465,6 +491,8 @@ public:
|
|||||||
// This getter can be used anytime.
|
// This getter can be used anytime.
|
||||||
virtual const gfxRGBA& GetColor() { return mColor; }
|
virtual const gfxRGBA& GetColor() { return mColor; }
|
||||||
|
|
||||||
|
NS_LAYER_DECL_NAME("ColorLayer", TYPE_COLOR)
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
ColorLayer(LayerManager* aManager, void* aImplData)
|
ColorLayer(LayerManager* aManager, void* aImplData)
|
||||||
: Layer(aManager, aImplData),
|
: Layer(aManager, aImplData),
|
||||||
@@ -531,6 +559,8 @@ public:
|
|||||||
void SetFilter(gfxPattern::GraphicsFilter aFilter) { mFilter = aFilter; }
|
void SetFilter(gfxPattern::GraphicsFilter aFilter) { mFilter = aFilter; }
|
||||||
gfxPattern::GraphicsFilter GetFilter() const { return mFilter; }
|
gfxPattern::GraphicsFilter GetFilter() const { return mFilter; }
|
||||||
|
|
||||||
|
NS_LAYER_DECL_NAME("CanvasLayer", TYPE_CANVAS)
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
CanvasLayer(LayerManager* aManager, void* aImplData)
|
CanvasLayer(LayerManager* aManager, void* aImplData)
|
||||||
: Layer(aManager, aImplData), mFilter(gfxPattern::FILTER_GOOD) {}
|
: Layer(aManager, aImplData), mFilter(gfxPattern::FILTER_GOOD) {}
|
||||||
|
|||||||
@@ -166,12 +166,6 @@ CanvasLayerD3D9::Updated(const nsIntRect& aRect)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LayerD3D9::LayerType
|
|
||||||
CanvasLayerD3D9::GetType()
|
|
||||||
{
|
|
||||||
return TYPE_CANVAS;
|
|
||||||
}
|
|
||||||
|
|
||||||
Layer*
|
Layer*
|
||||||
CanvasLayerD3D9::GetLayer()
|
CanvasLayerD3D9::GetLayer()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -68,7 +68,6 @@ public:
|
|||||||
virtual void Updated(const nsIntRect& aRect);
|
virtual void Updated(const nsIntRect& aRect);
|
||||||
|
|
||||||
// LayerD3D9 implementation
|
// LayerD3D9 implementation
|
||||||
virtual LayerType GetType();
|
|
||||||
virtual Layer* GetLayer();
|
virtual Layer* GetLayer();
|
||||||
virtual void RenderLayer();
|
virtual void RenderLayer();
|
||||||
|
|
||||||
|
|||||||
@@ -41,12 +41,6 @@
|
|||||||
namespace mozilla {
|
namespace mozilla {
|
||||||
namespace layers {
|
namespace layers {
|
||||||
|
|
||||||
LayerD3D9::LayerType
|
|
||||||
ColorLayerD3D9::GetType()
|
|
||||||
{
|
|
||||||
return TYPE_COLOR;
|
|
||||||
}
|
|
||||||
|
|
||||||
Layer*
|
Layer*
|
||||||
ColorLayerD3D9::GetLayer()
|
ColorLayerD3D9::GetLayer()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -56,8 +56,6 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// LayerD3D9 Implementation
|
// LayerD3D9 Implementation
|
||||||
virtual LayerType GetType();
|
|
||||||
|
|
||||||
virtual Layer* GetLayer();
|
virtual Layer* GetLayer();
|
||||||
|
|
||||||
virtual void RenderLayer();
|
virtual void RenderLayer();
|
||||||
|
|||||||
@@ -119,12 +119,6 @@ ContainerLayerD3D9::RemoveChild(Layer *aChild)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LayerD3D9::LayerType
|
|
||||||
ContainerLayerD3D9::GetType()
|
|
||||||
{
|
|
||||||
return TYPE_CONTAINER;
|
|
||||||
}
|
|
||||||
|
|
||||||
Layer*
|
Layer*
|
||||||
ContainerLayerD3D9::GetLayer()
|
ContainerLayerD3D9::GetLayer()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -59,8 +59,6 @@ public:
|
|||||||
virtual void RemoveChild(Layer* aChild);
|
virtual void RemoveChild(Layer* aChild);
|
||||||
|
|
||||||
/* LayerD3D9 implementation */
|
/* LayerD3D9 implementation */
|
||||||
LayerType GetType();
|
|
||||||
|
|
||||||
Layer* GetLayer();
|
Layer* GetLayer();
|
||||||
|
|
||||||
LayerD3D9* GetFirstChildD3D9();
|
LayerD3D9* GetFirstChildD3D9();
|
||||||
|
|||||||
@@ -130,12 +130,6 @@ ImageContainerD3D9::GetCurrentSize()
|
|||||||
return gfxIntSize(0,0);
|
return gfxIntSize(0,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
LayerD3D9::LayerType
|
|
||||||
ImageLayerD3D9::GetType()
|
|
||||||
{
|
|
||||||
return TYPE_IMAGE;
|
|
||||||
}
|
|
||||||
|
|
||||||
Layer*
|
Layer*
|
||||||
ImageLayerD3D9::GetLayer()
|
ImageLayerD3D9::GetLayer()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -82,8 +82,6 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// LayerD3D9 Implementation
|
// LayerD3D9 Implementation
|
||||||
virtual LayerType GetType();
|
|
||||||
|
|
||||||
virtual Layer* GetLayer();
|
virtual Layer* GetLayer();
|
||||||
|
|
||||||
virtual void RenderLayer();
|
virtual void RenderLayer();
|
||||||
|
|||||||
@@ -212,11 +212,6 @@ class LayerD3D9
|
|||||||
public:
|
public:
|
||||||
LayerD3D9(LayerManagerD3D9 *aManager);
|
LayerD3D9(LayerManagerD3D9 *aManager);
|
||||||
|
|
||||||
enum LayerType { TYPE_THEBES, TYPE_CONTAINER, TYPE_IMAGE, TYPE_COLOR,
|
|
||||||
TYPE_CANVAS };
|
|
||||||
|
|
||||||
virtual LayerType GetType() = 0;
|
|
||||||
|
|
||||||
virtual LayerD3D9 *GetFirstChildD3D9() { return nsnull; }
|
virtual LayerD3D9 *GetFirstChildD3D9() { return nsnull; }
|
||||||
|
|
||||||
void SetFirstChild(LayerD3D9 *aParent);
|
void SetFirstChild(LayerD3D9 *aParent);
|
||||||
|
|||||||
@@ -79,12 +79,6 @@ ThebesLayerD3D9::InvalidateRegion(const nsIntRegion &aRegion)
|
|||||||
mInvalidatedRect = invalidatedRegion.GetBounds();
|
mInvalidatedRect = invalidatedRegion.GetBounds();
|
||||||
}
|
}
|
||||||
|
|
||||||
LayerD3D9::LayerType
|
|
||||||
ThebesLayerD3D9::GetType()
|
|
||||||
{
|
|
||||||
return TYPE_THEBES;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ThebesLayerD3D9::RenderLayer()
|
ThebesLayerD3D9::RenderLayer()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -60,7 +60,6 @@ public:
|
|||||||
void InvalidateRegion(const nsIntRegion& aRegion);
|
void InvalidateRegion(const nsIntRegion& aRegion);
|
||||||
|
|
||||||
/* LayerD3D9 implementation */
|
/* LayerD3D9 implementation */
|
||||||
LayerType GetType();
|
|
||||||
Layer* GetLayer();
|
Layer* GetLayer();
|
||||||
virtual PRBool IsEmpty();
|
virtual PRBool IsEmpty();
|
||||||
virtual void RenderLayer();
|
virtual void RenderLayer();
|
||||||
|
|||||||
@@ -64,7 +64,6 @@ public:
|
|||||||
virtual void Updated(const nsIntRect& aRect);
|
virtual void Updated(const nsIntRect& aRect);
|
||||||
|
|
||||||
// LayerOGL implementation
|
// LayerOGL implementation
|
||||||
virtual LayerType GetType() { return TYPE_CANVAS; }
|
|
||||||
virtual Layer* GetLayer() { return this; }
|
virtual Layer* GetLayer() { return this; }
|
||||||
virtual void RenderLayer(int aPreviousFrameBuffer,
|
virtual void RenderLayer(int aPreviousFrameBuffer,
|
||||||
const nsIntPoint& aOffset);
|
const nsIntPoint& aOffset);
|
||||||
|
|||||||
@@ -41,12 +41,6 @@
|
|||||||
namespace mozilla {
|
namespace mozilla {
|
||||||
namespace layers {
|
namespace layers {
|
||||||
|
|
||||||
LayerOGL::LayerType
|
|
||||||
ColorLayerOGL::GetType()
|
|
||||||
{
|
|
||||||
return TYPE_COLOR;
|
|
||||||
}
|
|
||||||
|
|
||||||
Layer*
|
Layer*
|
||||||
ColorLayerOGL::GetLayer()
|
ColorLayerOGL::GetLayer()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -55,8 +55,6 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// LayerOGL Implementation
|
// LayerOGL Implementation
|
||||||
virtual LayerType GetType();
|
|
||||||
|
|
||||||
virtual Layer* GetLayer();
|
virtual Layer* GetLayer();
|
||||||
|
|
||||||
virtual void RenderLayer(int aPreviousFrameBuffer,
|
virtual void RenderLayer(int aPreviousFrameBuffer,
|
||||||
|
|||||||
@@ -119,12 +119,6 @@ ContainerLayerOGL::RemoveChild(Layer *aChild)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LayerOGL::LayerType
|
|
||||||
ContainerLayerOGL::GetType()
|
|
||||||
{
|
|
||||||
return TYPE_CONTAINER;
|
|
||||||
}
|
|
||||||
|
|
||||||
Layer*
|
Layer*
|
||||||
ContainerLayerOGL::GetLayer()
|
ContainerLayerOGL::GetLayer()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -58,8 +58,6 @@ public:
|
|||||||
void RemoveChild(Layer* aChild);
|
void RemoveChild(Layer* aChild);
|
||||||
|
|
||||||
/** LayerOGL implementation */
|
/** LayerOGL implementation */
|
||||||
LayerType GetType();
|
|
||||||
|
|
||||||
Layer* GetLayer();
|
Layer* GetLayer();
|
||||||
|
|
||||||
LayerOGL* GetFirstChildOGL();
|
LayerOGL* GetFirstChildOGL();
|
||||||
|
|||||||
@@ -255,12 +255,6 @@ ImageContainerOGL::GetCurrentSize()
|
|||||||
return gfxIntSize(0,0);
|
return gfxIntSize(0,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
LayerOGL::LayerType
|
|
||||||
ImageLayerOGL::GetType()
|
|
||||||
{
|
|
||||||
return TYPE_IMAGE;
|
|
||||||
}
|
|
||||||
|
|
||||||
Layer*
|
Layer*
|
||||||
ImageLayerOGL::GetLayer()
|
ImageLayerOGL::GetLayer()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -171,8 +171,6 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// LayerOGL Implementation
|
// LayerOGL Implementation
|
||||||
virtual LayerType GetType();
|
|
||||||
|
|
||||||
virtual Layer* GetLayer();
|
virtual Layer* GetLayer();
|
||||||
|
|
||||||
virtual void RenderLayer(int aPreviousFrameBuffer,
|
virtual void RenderLayer(int aPreviousFrameBuffer,
|
||||||
|
|||||||
@@ -62,22 +62,6 @@ using namespace mozilla::gl;
|
|||||||
|
|
||||||
int LayerManagerOGLProgram::sCurrentProgramKey = 0;
|
int LayerManagerOGLProgram::sCurrentProgramKey = 0;
|
||||||
|
|
||||||
static void
|
|
||||||
DumpLayerAndChildren(LayerOGL *l, int advance = 0)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < advance; i++)
|
|
||||||
fprintf(stderr, " ");
|
|
||||||
|
|
||||||
fprintf(stderr, "%p: Layer type %d\n", l, l->GetType());
|
|
||||||
|
|
||||||
l = l->GetFirstChildOGL();
|
|
||||||
while (l) {
|
|
||||||
DumpLayerAndChildren(l, advance+1);
|
|
||||||
Layer *genl = l->GetLayer()->GetNextSibling();
|
|
||||||
l = genl ? static_cast<LayerOGL*>(genl->ImplData()) : nsnull;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* LayerManagerOGL
|
* LayerManagerOGL
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -358,16 +358,6 @@ public:
|
|||||||
: mOGLManager(aManager)
|
: mOGLManager(aManager)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
enum LayerType {
|
|
||||||
TYPE_THEBES,
|
|
||||||
TYPE_CONTAINER,
|
|
||||||
TYPE_IMAGE,
|
|
||||||
TYPE_COLOR,
|
|
||||||
TYPE_CANVAS
|
|
||||||
};
|
|
||||||
|
|
||||||
virtual LayerType GetType() = 0;
|
|
||||||
|
|
||||||
virtual LayerOGL *GetFirstChildOGL() {
|
virtual LayerOGL *GetFirstChildOGL() {
|
||||||
return nsnull;
|
return nsnull;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -129,12 +129,6 @@ ThebesLayerOGL::InvalidateRegion(const nsIntRegion &aRegion)
|
|||||||
mValidRegion.Sub(mValidRegion, aRegion);
|
mValidRegion.Sub(mValidRegion, aRegion);
|
||||||
}
|
}
|
||||||
|
|
||||||
LayerOGL::LayerType
|
|
||||||
ThebesLayerOGL::GetType()
|
|
||||||
{
|
|
||||||
return TYPE_THEBES;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ThebesLayerOGL::RenderLayer(int aPreviousFrameBuffer,
|
ThebesLayerOGL::RenderLayer(int aPreviousFrameBuffer,
|
||||||
const nsIntPoint& aOffset)
|
const nsIntPoint& aOffset)
|
||||||
|
|||||||
@@ -64,7 +64,6 @@ public:
|
|||||||
void InvalidateRegion(const nsIntRegion& aRegion);
|
void InvalidateRegion(const nsIntRegion& aRegion);
|
||||||
|
|
||||||
/** LayerOGL implementation */
|
/** LayerOGL implementation */
|
||||||
LayerType GetType();
|
|
||||||
Layer* GetLayer();
|
Layer* GetLayer();
|
||||||
virtual PRBool IsEmpty();
|
virtual PRBool IsEmpty();
|
||||||
virtual void RenderLayer(int aPreviousFrameBuffer,
|
virtual void RenderLayer(int aPreviousFrameBuffer,
|
||||||
|
|||||||
Reference in New Issue
Block a user