summaryrefslogtreecommitdiff
path: root/debian/patches/08_r300_update_window_state_when_bound_but_stamp_changed.patch
blob: 8bf8db683f633c39ab6655931bd73d80aa324a4f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
From: Michel Dänzer <michel@tungstengraphics.com>
Date: Fri, 9 Mar 2007 08:43:17 +0000 (+0100)
Subject: r300: Also update window state when it's already bound but its stamp changed.
X-Git-Url: http://gitweb.freedesktop.org/?p=mesa/mesa.git;a=commitdiff;h=4d9901a1cab8e0d55b1b2309cf3ffec235e53149

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.
---

--- a/src/mesa/drivers/dri/r300/radeon_context.c
+++ b/src/mesa/drivers/dri/r300/radeon_context.c
@@ -273,15 +273,15 @@ GLboolean radeonMakeCurrent(__DRIcontext
 					      &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,