Passes pointer to Renderer to Framebuffer at construction.

TRAC #22000

Signed-off-by: Daniel Koch

Author:    Shannon Woods

git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1405 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Context.cpp b/src/libGLESv2/Context.cpp
index 1b4b553..974cb49 100644
--- a/src/libGLESv2/Context.cpp
+++ b/src/libGLESv2/Context.cpp
@@ -323,7 +323,7 @@
 
     Colorbuffer *colorbufferZero = new Colorbuffer(swapchain);
     DepthStencilbuffer *depthStencilbufferZero = new DepthStencilbuffer(swapchain);
-    Framebuffer *framebufferZero = new DefaultFramebuffer(colorbufferZero, depthStencilbufferZero);
+    Framebuffer *framebufferZero = new DefaultFramebuffer(mRenderer, colorbufferZero, depthStencilbufferZero);
 
     setFramebufferZero(framebufferZero);
 
@@ -1070,7 +1070,7 @@
 {
     if (!getFramebuffer(framebuffer))
     {
-        mFramebufferMap[framebuffer] = new Framebuffer();
+        mFramebufferMap[framebuffer] = new Framebuffer(mRenderer);
     }
 
     mState.readFramebuffer = framebuffer;
@@ -1080,7 +1080,7 @@
 {
     if (!getFramebuffer(framebuffer))
     {
-        mFramebufferMap[framebuffer] = new Framebuffer();
+        mFramebufferMap[framebuffer] = new Framebuffer(mRenderer);
     }
 
     mState.drawFramebuffer = framebuffer;
diff --git a/src/libGLESv2/Framebuffer.cpp b/src/libGLESv2/Framebuffer.cpp
index 77d79c0..a4be062 100644
--- a/src/libGLESv2/Framebuffer.cpp
+++ b/src/libGLESv2/Framebuffer.cpp
@@ -17,7 +17,8 @@
 namespace gl
 {
 
-Framebuffer::Framebuffer()
+Framebuffer::Framebuffer(rx::Renderer *renderer)
+    : mRenderer(renderer)
 {
     mColorbufferType = GL_NONE;
     mDepthbufferType = GL_NONE;
@@ -473,7 +474,8 @@
     return GL_FRAMEBUFFER_COMPLETE;
 }
 
-DefaultFramebuffer::DefaultFramebuffer(Colorbuffer *colorbuffer, DepthStencilbuffer *depthStencil)
+DefaultFramebuffer::DefaultFramebuffer(rx::Renderer *renderer, Colorbuffer *colorbuffer, DepthStencilbuffer *depthStencil)
+    : Framebuffer(renderer)
 {
     mColorbufferPointer.set(new Renderbuffer(0, colorbuffer));
 
diff --git a/src/libGLESv2/Framebuffer.h b/src/libGLESv2/Framebuffer.h
index 14d9c2a..ca978e9 100644
--- a/src/libGLESv2/Framebuffer.h
+++ b/src/libGLESv2/Framebuffer.h
@@ -17,6 +17,11 @@
 #include "common/angleutils.h"
 #include "common/RefCountObject.h"
 
+namespace rx
+{
+class Renderer;
+}
+
 namespace gl
 {
 class Renderbuffer;
@@ -28,7 +33,7 @@
 class Framebuffer
 {
   public:
-    Framebuffer();
+    explicit Framebuffer(rx::Renderer *renderer);
 
     virtual ~Framebuffer();
 
@@ -76,6 +81,8 @@
 
     BindingPointer<Renderbuffer> mNullColorbufferPointer;
 
+    rx::Renderer *mRenderer;
+
   private:
     DISALLOW_COPY_AND_ASSIGN(Framebuffer);
 
@@ -85,7 +92,7 @@
 class DefaultFramebuffer : public Framebuffer
 {
   public:
-    DefaultFramebuffer(Colorbuffer *colorbuffer, DepthStencilbuffer *depthStencil);
+    DefaultFramebuffer(rx::Renderer *Renderer, Colorbuffer *colorbuffer, DepthStencilbuffer *depthStencil);
 
     virtual GLenum completeness();