debian/changelog | 10 ++++++++++ src/mesa/tnl/t_vb_cliptmp.h | 16 ++++++++++++---- 2 files changed, 22 insertions(+), 4 deletions(-)
New commits: commit 0aa8f1df3cf4c0318c3d1a84d323fd4663c721cc Author: Cyril Brulebois <[EMAIL PROTECTED]> Date: Fri Feb 23 00:48:40 2007 +0100 * Non-maintainer upload. * Backport a fix from mesa 6.5.2 to mesa 6.5.1 which: - fixes braces around the ASSERT macro; - fixes a clipping problem, which leads to systematic segfaults of the X server (Closes: #405803). diff --git a/debian/changelog b/debian/changelog index 6586376..72750b0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +mesa (6.5.1-0.6) unstable; urgency=medium + + * Non-maintainer upload. + * Backport a fix from mesa 6.5.2 to mesa 6.5.1 which: + - fixes braces around the ASSERT macro; + - fixes a clipping problem, which leads to systematic segfaults of the + X server (Closes: #405803). + + -- Cyril Brulebois <[EMAIL PROTECTED]> Thu, 22 Feb 2007 21:08:56 +0100 + mesa (6.5.1-0.5) unstable; urgency=low * Non-maintainer upload. diff --git a/src/mesa/tnl/t_vb_cliptmp.h b/src/mesa/tnl/t_vb_cliptmp.h index f3776e7..8dfa018 100644 --- a/src/mesa/tnl/t_vb_cliptmp.h +++ b/src/mesa/tnl/t_vb_cliptmp.h @@ -125,6 +125,7 @@ TAG(clip_line)( GLcontext *ctx, GLuint v GLfloat t0 = 0; GLfloat t1 = 0; GLuint p; + const GLuint v0_orig = v0; if (mask & 0x3f) { LINE_CLIP( CLIP_RIGHT_BIT, -1, 0, 0, 1 ); @@ -153,12 +154,18 @@ TAG(clip_line)( GLcontext *ctx, GLuint v v0 = newvert; newvert++; } - else + else { ASSERT(t0 == 0.0); + } if (VB->ClipMask[v1]) { - INTERP_4F( t1, coord[newvert], coord[v1], coord[v0] ); - interp( ctx, t1, newvert, v1, v0, GL_FALSE ); + /* Note: we need to use vertex v0_orig when computing the new + * interpolated/clipped vertex position, not the current v0 which + * may have got set when we clipped the other end of the line! + */ + + INTERP_4F( t1, coord[newvert], coord[v1], coord[v0_orig] ); + interp( ctx, t1, newvert, v1, v0_orig, GL_FALSE ); if (ctx->Light.ShadeModel == GL_FLAT) tnl->Driver.Render.CopyPV( ctx, newvert, v1 ); @@ -167,8 +174,9 @@ TAG(clip_line)( GLcontext *ctx, GLuint v newvert++; } - else + else { ASSERT(t1 == 0.0); + } tnl->Driver.Render.ClippedLine( ctx, v0, v1 ); } -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]