diff options
author | Michel Dänzer <michel@tungstengraphics.com> | 2007-03-09 09:43:17 +0100 |
---|---|---|
committer | Michel Dänzer <michel@tungstengraphics.com> | 2007-03-09 09:43:17 +0100 |
commit | 4d9901a1cab8e0d55b1b2309cf3ffec235e53149 (patch) | |
tree | 6df8d8669b38a619d3ac02b10891c67a68f8ef64 /src | |
parent | d85667950f6797f63fa0863e6882390c2adaaf2b (diff) | |
download | external_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.c | 8 |
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, |