Mesa (master): st/dri: Fix surfaceless gl using contexts with previous bound surfaces
Kristian Høgsberg
krh at kemper.freedesktop.org
Fri Feb 11 04:52:17 UTC 2011
Module: Mesa
Branch: master
Commit: 0acb31be171f01aec8b38ceaddf47b7da6dae2a0
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0acb31be171f01aec8b38ceaddf47b7da6dae2a0
Author: Benjamin Franzke <benjaminfranzke at googlemail.com>
Date: Wed Feb 9 20:42:50 2011 +0100
st/dri: Fix surfaceless gl using contexts with previous bound surfaces
ctx->dPriv might be != NULL then draw which is NULL is accessed:
struct dri_drawable *draw = dri_drawable(driDrawPriv);
[..]
if (ctx->dPriv != driDrawPriv) {
ctx->dPriv = driDrawPriv;
draw->texture_stamp = driDrawPriv->lastStamp - 1;
}
---
.../state_trackers/dri/common/dri_context.c | 8 ++++++--
1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/src/gallium/state_trackers/dri/common/dri_context.c b/src/gallium/state_trackers/dri/common/dri_context.c
index 3d5d24e..999b411 100644
--- a/src/gallium/state_trackers/dri/common/dri_context.c
+++ b/src/gallium/state_trackers/dri/common/dri_context.c
@@ -169,6 +169,11 @@ dri_make_current(__DRIcontext * cPriv,
++ctx->bind_count;
+ if (!driDrawPriv && !driReadPriv)
+ return ctx->stapi->make_current(ctx->stapi, ctx->st, NULL, NULL);
+ else if (!driDrawPriv || !driReadPriv)
+ return GL_FALSE;
+
if (ctx->dPriv != driDrawPriv) {
ctx->dPriv = driDrawPriv;
draw->texture_stamp = driDrawPriv->lastStamp - 1;
@@ -178,8 +183,7 @@ dri_make_current(__DRIcontext * cPriv,
read->texture_stamp = driReadPriv->lastStamp - 1;
}
- ctx->stapi->make_current(ctx->stapi, ctx->st,
- (draw) ? &draw->base : NULL, (read) ? &read->base : NULL);
+ ctx->stapi->make_current(ctx->stapi, ctx->st, &draw->base, &read->base);
return GL_TRUE;
}
More information about the mesa-commit
mailing list