i965: fix segfault caused by commit e131c46b20.

This commit is contained in:
Xiang, Haihao
2008-01-10 16:45:35 +08:00
parent e131c46b20
commit c30392f187
2 changed files with 21 additions and 21 deletions

View File

@@ -670,27 +670,27 @@ GLboolean intelMakeCurrent(__DRIcontextPrivate *driContextPriv,
*/ */
{ {
struct intel_renderbuffer *irbDepth struct intel_renderbuffer *irbDepth
= intel_get_renderbuffer(&intel_fb->Base, BUFFER_DEPTH); = intel_get_renderbuffer(&intel_fb->Base, BUFFER_DEPTH);
struct intel_renderbuffer *irbStencil struct intel_renderbuffer *irbStencil
= intel_get_renderbuffer(&intel_fb->Base, BUFFER_STENCIL); = intel_get_renderbuffer(&intel_fb->Base, BUFFER_STENCIL);
if (intel_fb->color_rb[0] && !intel_fb->color_rb[0]->region) { if (intel_fb->color_rb[0]) {
intel_region_reference(&intel_fb->color_rb[0]->region, intel_renderbuffer_set_region(intel_fb->color_rb[0],
intel->front_region); intel->front_region);
} }
if (intel_fb->color_rb[1] && !intel_fb->color_rb[1]->region) { if (intel_fb->color_rb[1]) {
intel_region_reference(&intel_fb->color_rb[1]->region, intel_renderbuffer_set_region(intel_fb->color_rb[1],
intel->back_region); intel->back_region);
} }
if (intel_fb->color_rb[2] && !intel_fb->color_rb[2]->region) { if (intel_fb->color_rb[2]) {
intel_region_reference(&intel_fb->color_rb[2]->region, intel_renderbuffer_set_region(intel_fb->color_rb[2],
intel->third_region); intel->third_region);
} }
if (irbDepth && !irbDepth->region) { if (irbDepth) {
intel_region_reference(&irbDepth->region, intel->depth_region); intel_renderbuffer_set_region(irbDepth, intel->depth_region);
} }
if (irbStencil && !irbStencil->region) { if (irbStencil) {
intel_region_reference(&irbStencil->region, intel->depth_region); intel_renderbuffer_set_region(irbStencil, intel->depth_region);
} }
} }

View File

@@ -264,7 +264,7 @@ intel_map_unmap_buffers(struct intel_context *intel, GLboolean map)
/* depth buffer (Note wrapper!) */ /* depth buffer (Note wrapper!) */
if (ctx->DrawBuffer->_DepthBuffer) { if (ctx->DrawBuffer->_DepthBuffer) {
irb = intel_renderbuffer(ctx->DrawBuffer->_DepthBuffer->Wrapped); irb = intel_renderbuffer(ctx->DrawBuffer->_DepthBuffer->Wrapped);
if (irb && irb->region && irb->Base.Name != 0) { if (irb && irb->region) {
if (map) { if (map) {
intel_region_map(intel, irb->region); intel_region_map(intel, irb->region);
irb->pfMap = irb->region->map; irb->pfMap = irb->region->map;
@@ -272,8 +272,8 @@ intel_map_unmap_buffers(struct intel_context *intel, GLboolean map)
} }
else { else {
intel_region_unmap(intel, irb->region); intel_region_unmap(intel, irb->region);
irb->pfMap = NULL; irb->pfMap = irb->region->map;
irb->pfPitch = 0; irb->pfPitch = irb->region->pitch;
} }
} }
} }
@@ -281,7 +281,7 @@ intel_map_unmap_buffers(struct intel_context *intel, GLboolean map)
/* stencil buffer (Note wrapper!) */ /* stencil buffer (Note wrapper!) */
if (ctx->DrawBuffer->_StencilBuffer) { if (ctx->DrawBuffer->_StencilBuffer) {
irb = intel_renderbuffer(ctx->DrawBuffer->_StencilBuffer->Wrapped); irb = intel_renderbuffer(ctx->DrawBuffer->_StencilBuffer->Wrapped);
if (irb && irb->region && irb->Base.Name != 0) { if (irb && irb->region) {
if (map) { if (map) {
intel_region_map(intel, irb->region); intel_region_map(intel, irb->region);
irb->pfMap = irb->region->map; irb->pfMap = irb->region->map;
@@ -289,8 +289,8 @@ intel_map_unmap_buffers(struct intel_context *intel, GLboolean map)
} }
else { else {
intel_region_unmap(intel, irb->region); intel_region_unmap(intel, irb->region);
irb->pfMap = NULL; irb->pfMap = irb->region->map;
irb->pfPitch = 0; irb->pfPitch = irb->region->pitch;
} }
} }
} }