1 From dd7853f327ad7a286a59c9c5956d4989c31a58fa Mon Sep 17 00:00:00 2001
2 From: Chris Wilson <chris@chris-wilson.co.uk>
3 Date: Fri, 16 Jul 2010 12:24:53 +0100
4 Subject: [PATCH] intel: Fix invalidate before initialisation
8 Bug 29091 - 1.9RC5 server crash when starting GLX 1.3 app with mesa 7.8
10 https://bugs.freedesktop.org/show_bug.cgi?id=29091
12 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
14 src/mesa/drivers/dri/common/dri_util.c | 2 +-
15 src/mesa/drivers/dri/intel/intel_screen.c | 19 +++++++++++++++----
16 2 files changed, 16 insertions(+), 5 deletions(-)
18 diff --git a/src/mesa/drivers/dri/common/dri_util.c b/src/mesa/drivers/dri/common/dri_util.c
19 index 75c9882..9a9bfed 100644
20 --- a/src/mesa/drivers/dri/common/dri_util.c
21 +++ b/src/mesa/drivers/dri/common/dri_util.c
22 @@ -432,7 +432,7 @@ driCreateNewDrawable(__DRIscreen *psp, const __DRIconfig *config,
26 - pdp = malloc(sizeof *pdp);
27 + pdp = calloc(1, sizeof *pdp);
31 diff --git a/src/mesa/drivers/dri/intel/intel_screen.c b/src/mesa/drivers/dri/intel/intel_screen.c
32 index 6e4bb64..083b7bb 100644
33 --- a/src/mesa/drivers/dri/intel/intel_screen.c
34 +++ b/src/mesa/drivers/dri/intel/intel_screen.c
35 @@ -102,10 +102,21 @@ static const __DRItexBufferExtension intelTexBufferExtension = {
39 +static inline struct intel_context *
40 +to_intel_context(__DRIdrawable *drawable)
42 + if (drawable->driContextPriv == NULL)
45 + return drawable->driContextPriv->driverPrivate;
49 intelDRI2Flush(__DRIdrawable *drawable)
51 - struct intel_context *intel = drawable->driContextPriv->driverPrivate;
52 + struct intel_context *intel = to_intel_context(drawable);
57 INTEL_FIREVERTICES(intel);
58 @@ -117,9 +128,9 @@ intelDRI2Flush(__DRIdrawable *drawable)
60 intelDRI2Invalidate(__DRIdrawable *drawable)
62 - struct intel_context *intel = drawable->driContextPriv->driverPrivate;
64 - intel->using_dri2_swapbuffers = GL_TRUE;
65 + struct intel_context *intel = to_intel_context(drawable);
67 + intel->using_dri2_swapbuffers = GL_TRUE;
68 dri2InvalidateDrawable(drawable);