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
diff --git a/src/libGLESv2/Framebuffer.cpp b/src/libGLESv2/Framebuffer.cpp
index 3858e26..ffba05e 100644
--- a/src/libGLESv2/Framebuffer.cpp
+++ b/src/libGLESv2/Framebuffer.cpp
@@ -183,44 +183,38 @@
Colorbuffer *Framebuffer::getColorbuffer()
{
- Renderbuffer *rb = mColorbufferPointer.get();
+ Renderbuffer *renderbuffer = mColorbufferPointer.get();
- if (rb != NULL && rb->isColorbuffer())
+ if (renderbuffer)
{
- return static_cast<Colorbuffer*>(rb->getStorage());
+ return renderbuffer->getColorbuffer();
}
- else
- {
- return NULL;
- }
+
+ return NULL;
}
DepthStencilbuffer *Framebuffer::getDepthbuffer()
{
- Renderbuffer *rb = mDepthbufferPointer.get();
+ Renderbuffer *renderbuffer = mDepthbufferPointer.get();
- if (rb != NULL && rb->isDepthbuffer())
+ if (renderbuffer)
{
- return static_cast<DepthStencilbuffer*>(rb->getStorage());
+ return renderbuffer->getDepthbuffer();
}
- else
- {
- return NULL;
- }
+
+ 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());
+ return renderbuffer->getStencilbuffer();
}
- else
- {
- return NULL;
- }
+
+ return NULL;
}
GLenum Framebuffer::getColorbufferType()
diff --git a/src/libGLESv2/Renderbuffer.cpp b/src/libGLESv2/Renderbuffer.cpp
index ace8d7b..ae252ec 100644
--- a/src/libGLESv2/Renderbuffer.cpp
+++ b/src/libGLESv2/Renderbuffer.cpp
@@ -29,19 +29,19 @@
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 @@
{
}
-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 @@
return mD3DFormat;
}
-bool Colorbuffer::isColorbuffer() const
+Colorbuffer *Colorbuffer::getColorbuffer()
{
- return true;
+ return this;
}
IDirect3DSurface9 *Colorbuffer::getRenderTarget()
@@ -427,14 +427,14 @@
}
}
-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 @@
{
}
-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 @@
{
}
-bool Stencilbuffer::isDepthbuffer() const
+DepthStencilbuffer *Stencilbuffer::getDepthbuffer()
{
- return false;
+ return NULL;
}
-bool Stencilbuffer::isStencilbuffer() const
+DepthStencilbuffer *Stencilbuffer::getStencilbuffer()
{
- return true;
+ return this;
}
}
diff --git a/src/libGLESv2/Renderbuffer.h b/src/libGLESv2/Renderbuffer.h
index 5cf829c..493f98a 100644
--- a/src/libGLESv2/Renderbuffer.h
+++ b/src/libGLESv2/Renderbuffer.h
@@ -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 @@
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 @@
~Renderbuffer();
- bool isColorbuffer() const;
- bool isDepthbuffer() const;
- bool isStencilbuffer() const;
+ Colorbuffer *getColorbuffer();
+ DepthStencilbuffer *getDepthbuffer();
+ DepthStencilbuffer *getStencilbuffer();
IDirect3DSurface9 *getRenderTarget();
IDirect3DSurface9 *getDepthStencil();
@@ -121,7 +123,7 @@
virtual ~Colorbuffer();
- virtual bool isColorbuffer() const;
+ virtual Colorbuffer *getColorbuffer();
virtual IDirect3DSurface9 *getRenderTarget();
@@ -148,8 +150,8 @@
~DepthStencilbuffer();
- virtual bool isDepthbuffer() const;
- virtual bool isStencilbuffer() const;
+ virtual DepthStencilbuffer *getDepthbuffer();
+ virtual DepthStencilbuffer *getStencilbuffer();
virtual IDirect3DSurface9 *getDepthStencil();
@@ -166,8 +168,8 @@
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 @@
virtual ~Stencilbuffer();
- virtual bool isDepthbuffer() const;
- virtual bool isStencilbuffer() const;
+ virtual DepthStencilbuffer *getDepthbuffer();
+ virtual DepthStencilbuffer *getStencilbuffer();
private:
DISALLOW_COPY_AND_ASSIGN(Stencilbuffer);