From 76e836a41ad47237f80195c5dacb8bc57a7f2b69 Mon Sep 17 00:00:00 2001 From: Zou Nan hai Date: Wed, 16 Sep 2009 13:25:46 +0800 Subject: i965: do a flush in clear, fix openarena render issue, fd.o bug# 23857 --- src/mesa/drivers/dri/intel/intel_clear.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/intel/intel_clear.c b/src/mesa/drivers/dri/intel/intel_clear.c index bce23724b3..9efe6a277c 100644 --- a/src/mesa/drivers/dri/intel/intel_clear.c +++ b/src/mesa/drivers/dri/intel/intel_clear.c @@ -170,6 +170,7 @@ intelClear(GLcontext *ctx, GLbitfield mask) } DBG("\n"); } + intelFlush(&intel->ctx); _mesa_meta_clear(&intel->ctx, tri_mask); } -- cgit v1.2.3 From 2921a2555d0a76fa649b23c31e3264bbc78b2ff5 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Wed, 16 Sep 2009 07:39:58 -0700 Subject: intel: Deassociated drawables from private context struct in intelUnbindContext The generic DRI infrastructure makes sure that __DRIcontextRec::driDrawablePriv and __DRIcontextRec::driReadablePriv are set to NULL after unbinding a context. However, the intel_context structure keeps cached copies of these pointers. If these cached pointers are not NULLed and the drawable is actually destroyed after unbinding the context (typically by way of glXDestroyWindow), freed memory will be dereferenced in intelDestroyContext. This should fix bug #23418. --- src/mesa/drivers/dri/intel/intel_context.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c index aecb317eb8..7fa70e428d 100644 --- a/src/mesa/drivers/dri/intel/intel_context.c +++ b/src/mesa/drivers/dri/intel/intel_context.c @@ -840,6 +840,14 @@ intelDestroyContext(__DRIcontextPrivate * driContextPriv) GLboolean intelUnbindContext(__DRIcontextPrivate * driContextPriv) { + struct intel_context *intel = + (struct intel_context *) driContextPriv->driverPrivate; + + /* Deassociate the context with the drawables. + */ + intel->driDrawable = NULL; + intel->driReadDrawable = NULL; + return GL_TRUE; } -- cgit v1.2.3