зеркало из https://github.com/mozilla/pjs.git
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:
Родитель
b674762993
Коммит
19a2d1ca76
|
@ -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,
|
||||
|
|
Загрузка…
Ссылка в новой задаче