[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56821] trunk/blender/source/blender/ blenkernel/intern/idprop.c: Fix slow resizing of ID property arrays with more than 1619 items, it incorrectly

Brecht Van Lommel brechtvanlommel at pandora.be
Wed May 15 16:36:59 CEST 2013


Revision: 56821
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56821
Author:   blendix
Date:     2013-05-15 14:36:58 +0000 (Wed, 15 May 2013)
Log Message:
-----------
Fix slow resizing of ID property arrays with more than 1619 items, it incorrectly
reverted to sizing with by 1 each time. This was slowing down painting long strokes
with small brush radius.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/idprop.c

Modified: trunk/blender/source/blender/blenkernel/intern/idprop.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/idprop.c	2013-05-15 12:33:28 UTC (rev 56820)
+++ trunk/blender/source/blender/blenkernel/intern/idprop.c	2013-05-15 14:36:58 UTC (rev 56821)
@@ -138,14 +138,20 @@
 
 	/*first check if the array buffer size has room*/
 	/*if newlen is 200 chars less then totallen, reallocate anyway*/
-	if (newlen <= prop->totallen && prop->totallen - newlen < 200) {
-		int i;
+	if (newlen <= prop->totallen) {
+		if (newlen < prop->len && prop->totallen - newlen < 200) {
+			int i;
 
-		for (i = newlen; i < prop->len; i++)
-			IDP_FreeProperty(GETPROP(prop, i));
+			for (i = newlen; i < prop->len; i++)
+				IDP_FreeProperty(GETPROP(prop, i));
 
-		prop->len = newlen;
-		return;
+			prop->len = newlen;
+			return;
+		}
+		else if (newlen >= prop->len) {
+			prop->len = newlen;
+			return;
+		}
 	}
 
 	/* - Note: This code comes from python, here's the corresponding comment. - */




More information about the Bf-blender-cvs mailing list