summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichel Dänzer <michel@tungstengraphics.com>2007-03-09 09:43:17 +0100
committerMichel Dänzer <michel@tungstengraphics.com>2007-03-09 09:43:17 +0100
commit4d9901a1cab8e0d55b1b2309cf3ffec235e53149 (patch)
tree6df8d8669b38a619d3ac02b10891c67a68f8ef64 /src
parentd85667950f6797f63fa0863e6882390c2adaaf2b (diff)
downloadexternal_mesa3d-4d9901a1cab8e0d55b1b2309cf3ffec235e53149.zip
external_mesa3d-4d9901a1cab8e0d55b1b2309cf3ffec235e53149.tar.gz
external_mesa3d-4d9901a1cab8e0d55b1b2309cf3ffec235e53149.tar.bz2
r300: Also update window state when it's already bound but its stamp changed.
And set new cliprects before deriving other state from them. This ensures cliprects aren't accessed after having been freed. Thanks to Panagiotis Papadakos for testing various iterations of this.
Diffstat (limited to 'src')
-rw-r--r--src/mesa/drivers/dri/r300/radeon_context.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/mesa/drivers/dri/r300/radeon_context.c b/src/mesa/drivers/dri/r300/radeon_context.c
index d66f1dc..66d1b15 100644
--- a/src/mesa/drivers/dri/r300/radeon_context.c
+++ b/src/mesa/drivers/dri/r300/radeon_context.c
@@ -273,15 +273,15 @@ GLboolean radeonMakeCurrent(__DRIcontextPrivate * driContextPriv,
&radeon->vbl_seq);
}
+ radeon->dri.readable = driReadPriv;
+
if (radeon->dri.drawable != driDrawPriv ||
- radeon->dri.readable != driReadPriv) {
+ radeon->lastStamp != driDrawPriv->lastStamp) {
radeon->dri.drawable = driDrawPriv;
- radeon->dri.readable = driReadPriv;
+ radeonSetCliprects(radeon);
r300UpdateWindow(radeon->glCtx);
r300UpdateViewportOffset(radeon->glCtx);
-
- radeonSetCliprects(radeon);
}
_mesa_make_current(radeon->glCtx,