[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [10833] trunk/blender/source/blender/src/ transform_manipulator.c:

Brecht Van Lommel brechtvanlommel at pandora.be
Thu May 31 16:02:43 CEST 2007


Revision: 10833
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=10833
Author:   blendix
Date:     2007-05-31 16:02:43 +0200 (Thu, 31 May 2007)

Log Message:
-----------

Fix for memory leak:

Manipulator drawing, enabled or disabled, with the exception of the
combo manipulator, was leaking a GLU quadric on every redraw.

I don't think this caused trouble in practical situations though, it
leaked about 1 MB when running Alt+A for 20 minutes here.

Modified Paths:
--------------
    trunk/blender/source/blender/src/transform_manipulator.c

Modified: trunk/blender/source/blender/src/transform_manipulator.c
===================================================================
--- trunk/blender/source/blender/src/transform_manipulator.c	2007-05-31 13:48:16 UTC (rev 10832)
+++ trunk/blender/source/blender/src/transform_manipulator.c	2007-05-31 14:02:43 UTC (rev 10833)
@@ -697,11 +697,13 @@
 /* only called while G.moving */
 static void draw_manipulator_rotate_ghost(float mat[][4], int drawflags)
 {
-	GLUquadricObj *qobj= gluNewQuadric(); 
+	GLUquadricObj *qobj;
 	float size, phi, startphi, vec[3], svec[3], matt[4][4], cross[3], tmat[3][3];
 	int arcs= (G.rt!=2);
 	
 	glDisable(GL_DEPTH_TEST);
+
+	qobj= gluNewQuadric(); 
 	gluQuadricDrawStyle(qobj, GLU_FILL); 
 	
 	glColor4ub(0,0,0,64);
@@ -832,7 +834,7 @@
 
 static void draw_manipulator_rotate(float mat[][4], int moving, int drawflags, int combo)
 {
-	GLUquadricObj *qobj= gluNewQuadric(); 
+	GLUquadricObj *qobj; 
 	double plane[4];
 	float size, vec[3], unitmat[4][4];
 	float cywid= 0.33f*0.01f*(float)U.tw_handlesize;	
@@ -849,6 +851,8 @@
 	/* Init stuff */
 	glDisable(GL_DEPTH_TEST);
 	Mat4One(unitmat);
+
+	qobj= gluNewQuadric();
 	gluQuadricDrawStyle(qobj, GLU_FILL); 
 	
 	/* prepare for screen aligned draw */
@@ -1153,7 +1157,7 @@
 
 static void draw_manipulator_translate(float mat[][4], int moving, int drawflags, int combo, int colcode)
 {
-	GLUquadricObj *qobj = gluNewQuadric(); 
+	GLUquadricObj *qobj; 
 	float cylen= 0.01f*(float)U.tw_handlesize;
 	float cywid= 0.25f*cylen, dz, size;
 	float unitmat[4][4];
@@ -1163,6 +1167,8 @@
 	
 	if(moving) glTranslatef(Trans.vec[0], Trans.vec[1], Trans.vec[2]);
 	glDisable(GL_DEPTH_TEST);
+
+	qobj= gluNewQuadric();
 	gluQuadricDrawStyle(qobj, GLU_FILL); 
 	
 	/* center circle, do not add to selection when shift is pressed (planar constraint) */
@@ -1225,19 +1231,21 @@
 
 static void draw_manipulator_rotate_cyl(float mat[][4], int moving, int drawflags, int combo, int colcode)
 {
-	GLUquadricObj *qobj = gluNewQuadric(); 
+	GLUquadricObj *qobj;
 	float size;
 	float cylen= 0.01f*(float)U.tw_handlesize;
 	float cywid= 0.25f*cylen;
 	
 	/* when called while moving in mixed mode, do not draw when... */
 	if((drawflags & MAN_ROT_C)==0) return;
-	
+
 	/* prepare for screen aligned draw */
 	glPushMatrix();
 	size= screen_aligned(mat);
 	
 	glDisable(GL_DEPTH_TEST);
+
+	qobj= gluNewQuadric(); 
 	
 	/* Screen aligned view rot circle */
 	if(drawflags & MAN_ROT_V) {





More information about the Bf-blender-cvs mailing list