[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31514] branches/particles-2010/source/ blender/nodes/intern: Fixed bug in get/set particle nodes, which used wrong starting index for later batches due to uninitialised job- >current counter.

Lukas Toenne lukas.toenne at googlemail.com
Sun Aug 22 12:35:25 CEST 2010


Revision: 31514
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31514
Author:   lukastoenne
Date:     2010-08-22 12:35:25 +0200 (Sun, 22 Aug 2010)

Log Message:
-----------
Fixed bug in get/set particle nodes, which used wrong starting index for later batches due to uninitialised job->current counter.

Modified Paths:
--------------
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_get_particle_data.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_set_particle_data.c
    branches/particles-2010/source/blender/nodes/intern/SIM_util.h
    branches/particles-2010/source/blender/nodes/intern/node_tree_simulation.c

Modified: branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_get_particle_data.c
===================================================================
--- branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_get_particle_data.c	2010-08-22 10:17:31 UTC (rev 31513)
+++ branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_get_particle_data.c	2010-08-22 10:35:25 UTC (rev 31514)
@@ -62,9 +62,10 @@
 		ParticlePropertyInfo *propvel = pset_find_particle_property(pset, "Velocity");
 		ParticlePropertyInfo *propmass = pset_find_particle_property(pset, "Mass");
 		ParticlePropertyInfo *propinit = pset_find_particle_property(pset, "Init");
+		int i;
 		
 		pit_init(&pit, pset);
-		pit_goto(&pit, job->current);
+		pit_goto(&pit, (job->execlevel == 0 ? job->input_start : job->current));
 		SIM_JOBEXEC_INPUT_BEGIN(ctx, job, ostream, pit.pa != NULL);
 		sim_ostream_write_int(ostream, 0, pit.pa->number);
 		if (proppos)

Modified: branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_set_particle_data.c
===================================================================
--- branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_set_particle_data.c	2010-08-22 10:17:31 UTC (rev 31513)
+++ branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_set_particle_data.c	2010-08-22 10:35:25 UTC (rev 31514)
@@ -65,7 +65,7 @@
 		ParticlePropertyInfo *propinit = pset_find_particle_property(pset, "Init");
 
 		pit_init(&pit, pset);
-		pit_goto(&pit, job->current);
+		pit_goto(&pit, (job->execlevel == 0 ? job->input_start : job->current));
 		SIM_JOBEXEC_OUTPUT_BEGIN(ctx, job, istream, pit.pa != NULL);
 		if (proppos)
 			copy_v3_v3(pset_parprop(pit.pa, proppos), sim_istream_read_vector(istream, 0));

Modified: branches/particles-2010/source/blender/nodes/intern/SIM_util.h
===================================================================
--- branches/particles-2010/source/blender/nodes/intern/SIM_util.h	2010-08-22 10:17:31 UTC (rev 31513)
+++ branches/particles-2010/source/blender/nodes/intern/SIM_util.h	2010-08-22 10:35:25 UTC (rev 31514)
@@ -195,6 +195,26 @@
 		printf(", %d", job->current);
 #define SIM_JOBEXEC_DEBUGPRINT_END \
 	printf(" %d\n", job->current);
+#elif 0
+#define SIM_JOBEXEC_DEBUGPRINT_BEGIN \
+	printf("-> Node %s (level=%d, start=%d, tot=%d, cur=%d): ", job->node->node->name, job->execlevel, job->input_start, job->input_totdata, job->current);
+#define SIM_JOBEXEC_DEBUGPRINT \
+	if (i == 0) printf("%d", job->current); \
+	else if (i < 5) printf(", %d", job->current); \
+	else if (i == 5) printf(" ... ");
+#define SIM_JOBEXEC_DEBUGPRINT_FILTER \
+	if (sim_istream_isfiltered(istream)) { \
+		if (i == 0) printf("(%d)", job->current); \
+		else if (i < 5) printf(", (%d)", job->current); \
+		else if (i == 5) printf(" ... "); \
+	} \
+	else { \
+		if (i == 0) printf("%d", job->current); \
+		else if (i < 5) printf(", %d", job->current); \
+		else if (i == 5) printf(" ... "); \
+	}
+#define SIM_JOBEXEC_DEBUGPRINT_END \
+	printf(" %d\n", job->current);
 #else
 #define SIM_JOBEXEC_DEBUGPRINT_BEGIN
 #define SIM_JOBEXEC_DEBUGPRINT

Modified: branches/particles-2010/source/blender/nodes/intern/node_tree_simulation.c
===================================================================
--- branches/particles-2010/source/blender/nodes/intern/node_tree_simulation.c	2010-08-22 10:17:31 UTC (rev 31513)
+++ branches/particles-2010/source/blender/nodes/intern/node_tree_simulation.c	2010-08-22 10:35:25 UTC (rev 31514)
@@ -42,6 +42,7 @@
 #include "node_util.h"
 #include "SIM_util.h"
 
+#include "MEM_guardedalloc.h"
 
 static void foreachNodeTree(Main *main, void *calldata, bNodeTreeCallback func)
 {
@@ -1045,6 +1046,18 @@
 	if (!sim->ntmd)
 		return;
 	
+	#if 0
+	{
+		int p, memok;
+		ParticlePage *page;
+		printf("ParticleSet: totpages=%d, page_size=%d, sizeof(ParticlePage)=%d\n", sim->pset->totpages, sim->pset->page_size, (int)sizeof(ParticlePage));
+		for (p=0, page=sim->pset->pages; p < sim->pset->totpages; ++p, ++page) {
+			memok = MEM_testN(page->particles);
+			printf("Page %d: index=%d, fill=%d, alive=%d, memok=%d\n", p, page->index, page->fill, page->alive, memok);
+		}
+	}
+	#endif
+	
 	ntreeBeginExecTree(sim->ntmd->nodetree);
 	/* Simulation node trees use their own internal threads, thread argument is not used */
 	ntreeExecTree(sim->ntmd->nodetree, sim, 0);





More information about the Bf-blender-cvs mailing list