Fix mismatched map/unmap of buffers in swrast read/drawpixels error paths.

This commit is contained in:
Eric Anholt 2007-12-18 14:51:42 -08:00
parent 4878f12189
commit 9efa1029e5
2 changed files with 10 additions and 9 deletions

View File

@ -842,7 +842,8 @@ _swrast_DrawPixels( GLcontext *ctx,
format, type, pixels)) {
_mesa_error(ctx, GL_INVALID_OPERATION,
"glDrawPixels(invalid PBO access)");
goto end;
RENDER_FINISH(swrast, ctx);
return;
}
buf = (GLubyte *) ctx->Driver.MapBuffer(ctx, GL_PIXEL_UNPACK_BUFFER_EXT,
GL_READ_ONLY_ARB,
@ -850,7 +851,8 @@ _swrast_DrawPixels( GLcontext *ctx,
if (!buf) {
/* buffer is already mapped - that's an error */
_mesa_error(ctx, GL_INVALID_OPERATION, "glDrawPixels(PBO is mapped)");
goto end;
RENDER_FINISH(swrast, ctx);
return;
}
pixels = ADD_POINTERS(buf, pixels);
}
@ -890,8 +892,6 @@ _swrast_DrawPixels( GLcontext *ctx,
/* don't return yet, clean-up */
}
end:
RENDER_FINISH(swrast,ctx);
if (unpack->BufferObj->Name) {

View File

@ -570,7 +570,8 @@ _swrast_ReadPixels( GLcontext *ctx,
/* Do all needed clipping here, so that we can forget about it later */
if (!_mesa_clip_readpixels(ctx, &x, &y, &width, &height, &clippedPacking)) {
/* The ReadPixels region is totally outside the window bounds */
goto end;
RENDER_FINISH(swrast, ctx);
return;
}
if (clippedPacking.BufferObj->Name) {
@ -580,7 +581,8 @@ _swrast_ReadPixels( GLcontext *ctx,
format, type, pixels)) {
_mesa_error(ctx, GL_INVALID_OPERATION,
"glReadPixels(invalid PBO access)");
goto end;
RENDER_FINISH(swrast, ctx);
return;
}
buf = (GLubyte *) ctx->Driver.MapBuffer(ctx, GL_PIXEL_PACK_BUFFER_EXT,
GL_WRITE_ONLY_ARB,
@ -588,7 +590,8 @@ _swrast_ReadPixels( GLcontext *ctx,
if (!buf) {
/* buffer is already mapped - that's an error */
_mesa_error(ctx, GL_INVALID_OPERATION, "glReadPixels(PBO is mapped)");
goto end;
RENDER_FINISH(swrast, ctx);
return;
}
pixels = ADD_POINTERS(buf, pixels);
}
@ -629,8 +632,6 @@ _swrast_ReadPixels( GLcontext *ctx,
/* don't return yet, clean-up */
}
end:
RENDER_FINISH(swrast, ctx);
if (clippedPacking.BufferObj->Name) {