Fixed retrieving a render target interface and not releasing it
TRAC #12149
Signed-off-by: Andrew Lewycky
Signed-off-by: Daniel Koch

Author:    Nicolas Capens

git-svn-id: https://angleproject.googlecode.com/svn/trunk@234 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libEGL/Surface.cpp b/src/libEGL/Surface.cpp
index f58f07a..d1e7eec 100644
--- a/src/libEGL/Surface.cpp
+++ b/src/libEGL/Surface.cpp
@@ -146,6 +146,9 @@
         mDisplay->startScene();
         device->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, quad, 6 * sizeof(float));
 
+        textureSurface->Release();
+        texture->Release();
+
         mDisplay->endScene();
         result = mSwapChain->Present(NULL, NULL, NULL, NULL, D3DPRESENT_INTERVAL_IMMEDIATE | D3DPRESENT_DONOTWAIT);   // FIXME: Get the swap interval from the associated Display
 
@@ -153,9 +156,6 @@
         {
             return error(EGL_BAD_ALLOC);
         }
-
-        textureSurface->Release();
-        texture->Release();
     }
 }
 
diff --git a/src/libGLESv2/Texture.cpp b/src/libGLESv2/Texture.cpp
index 2257c03..af5b1d7 100644
--- a/src/libGLESv2/Texture.cpp
+++ b/src/libGLESv2/Texture.cpp
@@ -550,7 +550,7 @@
     }
     else
     {
-        getRenderTarget(GL_TEXTURE_2D);
+        needRenderTarget();
     }
 
     RECT sourceRect;