Commit febbea88 by apatrick@chromium.org

Fixed leak of render target associated with ColorBuffer.

Following r853, I am assuming that any render target returned by FrameBuffer::getRenderTarget has to be released. Updating the usage of getRenderTarget to reflect that. This is not reproducible in Chrome at the moment but it will be once I start rendering to pbuffers. I ran the WebGL conformance tests. No regressions or crashes. Review URL: http://codereview.appspot.com/5451110 git-svn-id: https://angleproject.googlecode.com/svn/trunk@903 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent f4490e22
......@@ -2293,6 +2293,8 @@ void Context::readPixels(GLint x, GLint y, GLsizei width, GLsizei height,
result = mDevice->GetRenderTargetData(renderTarget, systemSurface);
renderTarget->Release();
if (FAILED(result))
{
systemSurface->Release();
......@@ -2609,6 +2611,8 @@ void Context::clear(GLbitfield mask)
D3DSURFACE_DESC desc;
renderTarget->GetDesc(&desc);
renderTarget->Release();
bool alphaUnmasked = (dx2es::GetAlphaSize(desc.Format) == 0) || mState.colorMaskAlpha;
const bool needMaskedStencilClear = (flags & D3DCLEAR_STENCIL) &&
......@@ -3791,8 +3795,14 @@ void Context::blitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1
if (blitRenderTarget)
{
HRESULT result = mDevice->StretchRect(readFramebuffer->getRenderTarget(), &sourceTrimmedRect,
drawFramebuffer->getRenderTarget(), &destTrimmedRect, D3DTEXF_NONE);
IDirect3DSurface9* readRenderTarget = readFramebuffer->getRenderTarget();
IDirect3DSurface9* drawRenderTarget = drawFramebuffer->getRenderTarget();
HRESULT result = mDevice->StretchRect(readRenderTarget, &sourceTrimmedRect,
drawRenderTarget, &destTrimmedRect, D3DTEXF_NONE);
readRenderTarget->Release();
drawRenderTarget->Release();
if (FAILED(result))
{
......
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