[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