[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [27924] trunk/blender/source/blender/ editors/space_graph/graph_draw.c: Bugfix #21763: extremly zooming into graph editor via ctrl+mmb locks up blender

Joshua Leung aligorith at gmail.com
Thu Apr 1 13:59:27 CEST 2010


Revision: 27924
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27924
Author:   aligorith
Date:     2010-04-01 13:59:27 +0200 (Thu, 01 Apr 2010)

Log Message:
-----------
Bugfix #21763: extremly zooming into graph editor via ctrl+mmb locks up blender

Curve sampling minimum 'sampling frequency' for display could get too low causing a hang (with really-slow convergence). Clamping with a coarses limit now.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_graph/graph_draw.c

Modified: trunk/blender/source/blender/editors/space_graph/graph_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_graph/graph_draw.c	2010-04-01 09:29:35 UTC (rev 27923)
+++ trunk/blender/source/blender/editors/space_graph/graph_draw.c	2010-04-01 11:59:27 UTC (rev 27924)
@@ -523,19 +523,20 @@
 	 *	though it is impossible to predict this from the modifiers!
 	 *
 	 *	If the automatically determined sampling frequency is likely to cause an infinite
-	 *	loop (i.e. too close to FLT_EPSILON), fall back to default of 0.001
+	 *	loop (i.e. too close to 0), then clamp it to a determined "safe" value. The value
+	 * 	chosen here is just the coarsest value which still looks reasonable...
 	 */
 		/* grid->dx is the first float in View2DGrid struct, so just cast to float pointer, and use it
 		 * It represents the number of 'frames' between gridlines, but we divide by U.v2d_min_gridsize to get pixels-steps
 		 */
 		// TODO: perhaps we should have 1.0 frames as upper limit so that curves don't get too distorted?
 	samplefreq= *((float *)grid) / U.v2d_min_gridsize;
-	if (IS_EQ(samplefreq, 0)) samplefreq= 0.001f;
+	if (samplefreq < 0.00001f) samplefreq= 0.00001f;
 	
 	
 	/* the start/end times are simply the horizontal extents of the 'cur' rect */
 	stime= v2d->cur.xmin;
-	etime= v2d->cur.xmax;
+	etime= v2d->cur.xmax + samplefreq; /* + samplefreq here so that last item gets included... */
 	
 	
 	/* at each sampling interval, add a new vertex 





More information about the Bf-blender-cvs mailing list