Replaced raw pointers to RefCountObject to BindingPointer.

This fixes the ANGLE crashes in Chrome when using canvas 2D.

The issue was this:

Renderbuffer *mColorbufferProxy = new RenderBuffer(...); // Reference count is zero.

BindingPointer<RenderBuffer> tempRef;
tempRef.set(mColorbufferProxy); // Reference count is one.

tempRef.set(NULL); // Reference count is zero and object is destroyed, leaving mColorbufferProxy dangling.

I also initially suspected the problem was that FBOs are not treated as shared and the implementation of shared FBOs is still in the patch. I believe GLES2 supports shared FBOs.

My reading of the GLES2 spec is that when a shared object is deleted, it loses its id but retains its state if left bound elsewhere. I added that to RefCountObject.



Review URL: http://codereview.appspot.com/2120045

git-svn-id: https://angleproject.googlecode.com/svn/trunk@417 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Framebuffer.cpp b/src/libGLESv2/Framebuffer.cpp
index 6e45340..d00b4da 100644
--- a/src/libGLESv2/Framebuffer.cpp
+++ b/src/libGLESv2/Framebuffer.cpp
@@ -17,7 +17,7 @@
 namespace gl
 {
 
-Framebuffer::Framebuffer()
+Framebuffer::Framebuffer(GLuint id) : RefCountObject(id)
 {
     mColorbufferType = GL_NONE;
     mDepthbufferType = GL_NONE;
@@ -429,6 +429,7 @@
 }
 
 DefaultFramebuffer::DefaultFramebuffer(Colorbuffer *color, DepthStencilbuffer *depthStencil)
+    : Framebuffer(0)
 {
     mColorbufferType = GL_RENDERBUFFER;
     mDepthbufferType = GL_RENDERBUFFER;