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:
Matt Woodrow 2010-07-01 20:01:09 -05:00
Родитель b674762993
Коммит 19a2d1ca76
24 изменённых файлов: 33 добавлений и 102 удалений

Просмотреть файл

@ -198,6 +198,8 @@ public:
ImageContainer* GetContainer() { return mContainer; }
gfxPattern::GraphicsFilter GetFilter() { return mFilter; }
NS_LAYER_DECL_NAME("ImageLayer", TYPE_IMAGE)
protected:
ImageLayer(LayerManager* aManager, void* aImplData)
: Layer(aManager, aImplData), mFilter(gfxPattern::FILTER_GOOD) {}

Просмотреть файл

@ -67,6 +67,15 @@ class ColorLayer;
class ImageContainer;
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
* 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)
public:
enum LayerType {
TYPE_THEBES,
TYPE_CONTAINER,
TYPE_IMAGE,
TYPE_COLOR,
TYPE_CANVAS
};
virtual ~Layer() {}
/**
@ -337,6 +354,11 @@ public:
*/
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
* private data. Normally, all layers with a given layer manager
@ -406,6 +428,8 @@ public:
virtual ThebesLayer* AsThebesLayer() { return this; }
NS_LAYER_DECL_NAME("ThebesLayer", TYPE_THEBES)
protected:
ThebesLayer(LayerManager* aManager, void* aImplData)
: Layer(aManager, aImplData) {}
@ -437,6 +461,8 @@ public:
// This getter can be used anytime.
virtual Layer* GetFirstChild() { return mFirstChild; }
NS_LAYER_DECL_NAME("ContainerLayer", TYPE_CONTAINER)
protected:
ContainerLayer(LayerManager* aManager, void* aImplData)
: Layer(aManager, aImplData),
@ -465,6 +491,8 @@ public:
// This getter can be used anytime.
virtual const gfxRGBA& GetColor() { return mColor; }
NS_LAYER_DECL_NAME("ColorLayer", TYPE_COLOR)
protected:
ColorLayer(LayerManager* aManager, void* aImplData)
: Layer(aManager, aImplData),
@ -531,6 +559,8 @@ public:
void SetFilter(gfxPattern::GraphicsFilter aFilter) { mFilter = aFilter; }
gfxPattern::GraphicsFilter GetFilter() const { return mFilter; }
NS_LAYER_DECL_NAME("CanvasLayer", TYPE_CANVAS)
protected:
CanvasLayer(LayerManager* aManager, void* aImplData)
: Layer(aManager, aImplData), mFilter(gfxPattern::FILTER_GOOD) {}

Просмотреть файл

@ -166,12 +166,6 @@ CanvasLayerD3D9::Updated(const nsIntRect& aRect)
}
}
LayerD3D9::LayerType
CanvasLayerD3D9::GetType()
{
return TYPE_CANVAS;
}
Layer*
CanvasLayerD3D9::GetLayer()
{

Просмотреть файл

@ -68,7 +68,6 @@ public:
virtual void Updated(const nsIntRect& aRect);
// LayerD3D9 implementation
virtual LayerType GetType();
virtual Layer* GetLayer();
virtual void RenderLayer();

Просмотреть файл

@ -41,12 +41,6 @@
namespace mozilla {
namespace layers {
LayerD3D9::LayerType
ColorLayerD3D9::GetType()
{
return TYPE_COLOR;
}
Layer*
ColorLayerD3D9::GetLayer()
{

Просмотреть файл

@ -56,8 +56,6 @@ public:
}
// LayerD3D9 Implementation
virtual LayerType GetType();
virtual Layer* GetLayer();
virtual void RenderLayer();

Просмотреть файл

@ -119,12 +119,6 @@ ContainerLayerD3D9::RemoveChild(Layer *aChild)
}
}
LayerD3D9::LayerType
ContainerLayerD3D9::GetType()
{
return TYPE_CONTAINER;
}
Layer*
ContainerLayerD3D9::GetLayer()
{

Просмотреть файл

@ -59,8 +59,6 @@ public:
virtual void RemoveChild(Layer* aChild);
/* LayerD3D9 implementation */
LayerType GetType();
Layer* GetLayer();
LayerD3D9* GetFirstChildD3D9();

Просмотреть файл

@ -130,12 +130,6 @@ ImageContainerD3D9::GetCurrentSize()
return gfxIntSize(0,0);
}
LayerD3D9::LayerType
ImageLayerD3D9::GetType()
{
return TYPE_IMAGE;
}
Layer*
ImageLayerD3D9::GetLayer()
{

Просмотреть файл

@ -82,8 +82,6 @@ public:
}
// LayerD3D9 Implementation
virtual LayerType GetType();
virtual Layer* GetLayer();
virtual void RenderLayer();

Просмотреть файл

@ -212,11 +212,6 @@ class LayerD3D9
public:
LayerD3D9(LayerManagerD3D9 *aManager);
enum LayerType { TYPE_THEBES, TYPE_CONTAINER, TYPE_IMAGE, TYPE_COLOR,
TYPE_CANVAS };
virtual LayerType GetType() = 0;
virtual LayerD3D9 *GetFirstChildD3D9() { return nsnull; }
void SetFirstChild(LayerD3D9 *aParent);

Просмотреть файл

@ -79,12 +79,6 @@ ThebesLayerD3D9::InvalidateRegion(const nsIntRegion &aRegion)
mInvalidatedRect = invalidatedRegion.GetBounds();
}
LayerD3D9::LayerType
ThebesLayerD3D9::GetType()
{
return TYPE_THEBES;
}
void
ThebesLayerD3D9::RenderLayer()
{

Просмотреть файл

@ -60,7 +60,6 @@ public:
void InvalidateRegion(const nsIntRegion& aRegion);
/* LayerD3D9 implementation */
LayerType GetType();
Layer* GetLayer();
virtual PRBool IsEmpty();
virtual void RenderLayer();

Просмотреть файл

@ -64,7 +64,6 @@ public:
virtual void Updated(const nsIntRect& aRect);
// LayerOGL implementation
virtual LayerType GetType() { return TYPE_CANVAS; }
virtual Layer* GetLayer() { return this; }
virtual void RenderLayer(int aPreviousFrameBuffer,
const nsIntPoint& aOffset);

Просмотреть файл

@ -41,12 +41,6 @@
namespace mozilla {
namespace layers {
LayerOGL::LayerType
ColorLayerOGL::GetType()
{
return TYPE_COLOR;
}
Layer*
ColorLayerOGL::GetLayer()
{

Просмотреть файл

@ -55,8 +55,6 @@ public:
}
// LayerOGL Implementation
virtual LayerType GetType();
virtual Layer* GetLayer();
virtual void RenderLayer(int aPreviousFrameBuffer,

Просмотреть файл

@ -119,12 +119,6 @@ ContainerLayerOGL::RemoveChild(Layer *aChild)
}
}
LayerOGL::LayerType
ContainerLayerOGL::GetType()
{
return TYPE_CONTAINER;
}
Layer*
ContainerLayerOGL::GetLayer()
{

Просмотреть файл

@ -58,8 +58,6 @@ public:
void RemoveChild(Layer* aChild);
/** LayerOGL implementation */
LayerType GetType();
Layer* GetLayer();
LayerOGL* GetFirstChildOGL();

Просмотреть файл

@ -255,12 +255,6 @@ ImageContainerOGL::GetCurrentSize()
return gfxIntSize(0,0);
}
LayerOGL::LayerType
ImageLayerOGL::GetType()
{
return TYPE_IMAGE;
}
Layer*
ImageLayerOGL::GetLayer()
{

Просмотреть файл

@ -171,8 +171,6 @@ public:
}
// LayerOGL Implementation
virtual LayerType GetType();
virtual Layer* GetLayer();
virtual void RenderLayer(int aPreviousFrameBuffer,

Просмотреть файл

@ -62,22 +62,6 @@ using namespace mozilla::gl;
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
*/

Просмотреть файл

@ -358,16 +358,6 @@ public:
: mOGLManager(aManager)
{ }
enum LayerType {
TYPE_THEBES,
TYPE_CONTAINER,
TYPE_IMAGE,
TYPE_COLOR,
TYPE_CANVAS
};
virtual LayerType GetType() = 0;
virtual LayerOGL *GetFirstChildOGL() {
return nsnull;
}

Просмотреть файл

@ -129,12 +129,6 @@ ThebesLayerOGL::InvalidateRegion(const nsIntRegion &aRegion)
mValidRegion.Sub(mValidRegion, aRegion);
}
LayerOGL::LayerType
ThebesLayerOGL::GetType()
{
return TYPE_THEBES;
}
void
ThebesLayerOGL::RenderLayer(int aPreviousFrameBuffer,
const nsIntPoint& aOffset)

Просмотреть файл

@ -64,7 +64,6 @@ public:
void InvalidateRegion(const nsIntRegion& aRegion);
/** LayerOGL implementation */
LayerType GetType();
Layer* GetLayer();
virtual PRBool IsEmpty();
virtual void RenderLayer(int aPreviousFrameBuffer,