Fixed unsafe casting.

TRAC #16284 Signed-off-by: Daniel Koch Author: Nicolas Capens git-svn-id: https://angleproject.googlecode.com/svn/trunk@837 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent 1a01e830
......@@ -183,44 +183,38 @@ unsigned int Framebuffer::getStencilbufferSerial()
Colorbuffer *Framebuffer::getColorbuffer()
{
Renderbuffer *rb = mColorbufferPointer.get();
Renderbuffer *renderbuffer = mColorbufferPointer.get();
if (rb != NULL && rb->isColorbuffer())
if (renderbuffer)
{
return static_cast<Colorbuffer*>(rb->getStorage());
}
else
{
return NULL;
return renderbuffer->getColorbuffer();
}
return NULL;
}
DepthStencilbuffer *Framebuffer::getDepthbuffer()
{
Renderbuffer *rb = mDepthbufferPointer.get();
Renderbuffer *renderbuffer = mDepthbufferPointer.get();
if (rb != NULL && rb->isDepthbuffer())
{
return static_cast<DepthStencilbuffer*>(rb->getStorage());
}
else
if (renderbuffer)
{
return NULL;
return renderbuffer->getDepthbuffer();
}
return NULL;
}
DepthStencilbuffer *Framebuffer::getStencilbuffer()
{
Renderbuffer *rb = mStencilbufferPointer.get();
Renderbuffer *renderbuffer = mStencilbufferPointer.get();
if (rb != NULL && rb->isStencilbuffer())
if (renderbuffer)
{
return static_cast<DepthStencilbuffer*>(rb->getStorage());
}
else
{
return NULL;
return renderbuffer->getStencilbuffer();
}
return NULL;
}
GLenum Framebuffer::getColorbufferType()
......
......@@ -29,19 +29,19 @@ Renderbuffer::~Renderbuffer()
delete mStorage;
}
bool Renderbuffer::isColorbuffer() const
Colorbuffer *Renderbuffer::getColorbuffer()
{
return mStorage->isColorbuffer();
return mStorage->getColorbuffer();
}
bool Renderbuffer::isDepthbuffer() const
DepthStencilbuffer *Renderbuffer::getDepthbuffer()
{
return mStorage->isDepthbuffer();
return mStorage->getDepthbuffer();
}
bool Renderbuffer::isStencilbuffer() const
DepthStencilbuffer *Renderbuffer::getStencilbuffer()
{
return mStorage->isStencilbuffer();
return mStorage->getStencilbuffer();
}
IDirect3DSurface9 *Renderbuffer::getRenderTarget()
......@@ -130,19 +130,19 @@ RenderbufferStorage::~RenderbufferStorage()
{
}
bool RenderbufferStorage::isColorbuffer() const
Colorbuffer *RenderbufferStorage::getColorbuffer()
{
return false;
return NULL;
}
bool RenderbufferStorage::isDepthbuffer() const
DepthStencilbuffer *RenderbufferStorage::getDepthbuffer()
{
return false;
return NULL;
}
bool RenderbufferStorage::isStencilbuffer() const
DepthStencilbuffer *RenderbufferStorage::getStencilbuffer()
{
return false;
return NULL;
}
IDirect3DSurface9 *RenderbufferStorage::getRenderTarget()
......@@ -345,9 +345,9 @@ D3DFORMAT Colorbuffer::getD3DFormat() const
return mD3DFormat;
}
bool Colorbuffer::isColorbuffer() const
Colorbuffer *Colorbuffer::getColorbuffer()
{
return true;
return this;
}
IDirect3DSurface9 *Colorbuffer::getRenderTarget()
......@@ -427,14 +427,14 @@ DepthStencilbuffer::~DepthStencilbuffer()
}
}
bool DepthStencilbuffer::isDepthbuffer() const
DepthStencilbuffer *DepthStencilbuffer::getDepthbuffer()
{
return true;
return this;
}
bool DepthStencilbuffer::isStencilbuffer() const
DepthStencilbuffer *DepthStencilbuffer::getStencilbuffer()
{
return true;
return this;
}
IDirect3DSurface9 *DepthStencilbuffer::getDepthStencil()
......@@ -466,14 +466,14 @@ Depthbuffer::~Depthbuffer()
{
}
bool Depthbuffer::isDepthbuffer() const
DepthStencilbuffer *Depthbuffer::getDepthbuffer()
{
return true;
return this;
}
bool Depthbuffer::isStencilbuffer() const
DepthStencilbuffer *Depthbuffer::getStencilbuffer()
{
return false;
return NULL;
}
Stencilbuffer::Stencilbuffer(IDirect3DSurface9 *depthStencil) : DepthStencilbuffer(depthStencil)
......@@ -500,13 +500,13 @@ Stencilbuffer::~Stencilbuffer()
{
}
bool Stencilbuffer::isDepthbuffer() const
DepthStencilbuffer *Stencilbuffer::getDepthbuffer()
{
return false;
return NULL;
}
bool Stencilbuffer::isStencilbuffer() const
DepthStencilbuffer *Stencilbuffer::getStencilbuffer()
{
return true;
return this;
}
}
......@@ -22,6 +22,8 @@
namespace gl
{
class Texture;
class Colorbuffer;
class DepthStencilbuffer;
// A class derived from RenderbufferStorage is created whenever glRenderbufferStorage
// is called. The specific concrete type depends on whether the internal format is
......@@ -33,9 +35,9 @@ class RenderbufferStorage
virtual ~RenderbufferStorage() = 0;
virtual bool isColorbuffer() const;
virtual bool isDepthbuffer() const;
virtual bool isStencilbuffer() const;
virtual Colorbuffer *getColorbuffer();
virtual DepthStencilbuffer *getDepthbuffer();
virtual DepthStencilbuffer *getStencilbuffer();
virtual IDirect3DSurface9 *getRenderTarget();
virtual IDirect3DSurface9 *getDepthStencil();
......@@ -82,9 +84,9 @@ class Renderbuffer : public RefCountObject
~Renderbuffer();
bool isColorbuffer() const;
bool isDepthbuffer() const;
bool isStencilbuffer() const;
Colorbuffer *getColorbuffer();
DepthStencilbuffer *getDepthbuffer();
DepthStencilbuffer *getStencilbuffer();
IDirect3DSurface9 *getRenderTarget();
IDirect3DSurface9 *getDepthStencil();
......@@ -121,7 +123,7 @@ class Colorbuffer : public RenderbufferStorage
virtual ~Colorbuffer();
virtual bool isColorbuffer() const;
virtual Colorbuffer *getColorbuffer();
virtual IDirect3DSurface9 *getRenderTarget();
......@@ -148,8 +150,8 @@ class DepthStencilbuffer : public RenderbufferStorage
~DepthStencilbuffer();
virtual bool isDepthbuffer() const;
virtual bool isStencilbuffer() const;
virtual DepthStencilbuffer *getDepthbuffer();
virtual DepthStencilbuffer *getStencilbuffer();
virtual IDirect3DSurface9 *getDepthStencil();
......@@ -166,8 +168,8 @@ class Depthbuffer : public DepthStencilbuffer
virtual ~Depthbuffer();
virtual bool isDepthbuffer() const;
virtual bool isStencilbuffer() const;
virtual DepthStencilbuffer *getDepthbuffer();
virtual DepthStencilbuffer *getStencilbuffer();
private:
DISALLOW_COPY_AND_ASSIGN(Depthbuffer);
......@@ -181,8 +183,8 @@ class Stencilbuffer : public DepthStencilbuffer
virtual ~Stencilbuffer();
virtual bool isDepthbuffer() const;
virtual bool isStencilbuffer() const;
virtual DepthStencilbuffer *getDepthbuffer();
virtual DepthStencilbuffer *getStencilbuffer();
private:
DISALLOW_COPY_AND_ASSIGN(Stencilbuffer);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment