[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28174] trunk/blender/source/blender: Fix for [#21983] Entering Particle Edit mode crash
Janne Karhu
jhkarh at gmail.com
Tue Apr 13 21:44:17 CEST 2010
Revision: 28174
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28174
Author: jhk
Date: 2010-04-13 21:44:16 +0200 (Tue, 13 Apr 2010)
Log Message:
-----------
Fix for [#21983] Entering Particle Edit mode crash
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/BKE_pointcache.h
trunk/blender/source/blender/blenkernel/intern/pointcache.c
trunk/blender/source/blender/editors/physics/particle_edit.c
Modified: trunk/blender/source/blender/blenkernel/BKE_pointcache.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_pointcache.h 2010-04-13 19:39:28 UTC (rev 28173)
+++ trunk/blender/source/blender/blenkernel/BKE_pointcache.h 2010-04-13 19:44:16 UTC (rev 28174)
@@ -258,6 +258,7 @@
/* Memory cache read/write helpers. */
void BKE_ptcache_mem_init_pointers(struct PTCacheMem *pm);
void BKE_ptcache_mem_incr_pointers(struct PTCacheMem *pm);
+int BKE_ptcache_mem_seek_pointers(int point_index, struct PTCacheMem *pm);
/* Copy a specific data type from cache data to point data. */
void BKE_ptcache_data_get(void **data, int type, int index, void *to);
Modified: trunk/blender/source/blender/blenkernel/intern/pointcache.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/pointcache.c 2010-04-13 19:39:28 UTC (rev 28173)
+++ trunk/blender/source/blender/blenkernel/intern/pointcache.c 2010-04-13 19:44:16 UTC (rev 28174)
@@ -1328,7 +1328,7 @@
pm->cur[i] = (char*)pm->cur[i] + ptcache_data_size[i];
}
}
-static int BKE_ptcache_mem_seek_pointers(int point_index, PTCacheMem *pm)
+int BKE_ptcache_mem_seek_pointers(int point_index, PTCacheMem *pm)
{
int data_types = pm->data_types;
int i, index = pm->index_array ? pm->index_array[point_index] - 1 : point_index;
Modified: trunk/blender/source/blender/editors/physics/particle_edit.c
===================================================================
--- trunk/blender/source/blender/editors/physics/particle_edit.c 2010-04-13 19:39:28 UTC (rev 28173)
+++ trunk/blender/source/blender/editors/physics/particle_edit.c 2010-04-13 19:44:16 UTC (rev 28174)
@@ -3663,6 +3663,8 @@
for(; pm; pm=pm->next) {
for(i=0; i<BPHYS_TOT_DATA; i++)
pm->data[i] = MEM_dupallocN(pm->data[i]);
+
+ pm->index_array = MEM_dupallocN(pm->index_array);
}
}
@@ -3737,6 +3739,8 @@
for(i=0; i<BPHYS_TOT_DATA; i++)
pm->data[i] = MEM_dupallocN(pm->data[i]);
+ pm->index_array = MEM_dupallocN(pm->index_array);
+
BKE_ptcache_mem_init_pointers(pm);
LOOP_POINTS {
@@ -4001,12 +4005,20 @@
LOOP_POINTS {
if(psys) {
- pa = psys->particles + p;
- if((pm->next && pm->next->frame < pa->time)
- || (pm->prev && pm->prev->frame >= pa->dietime)) {
- BKE_ptcache_mem_incr_pointers(pm);
+ if(pm->index_array) {
+ if(pm->index_array[p])
+ BKE_ptcache_mem_seek_pointers(p, pm);
+ else
continue;
- }
+ }
+ else {
+ pa = psys->particles + p;
+ if((pm->next && pm->next->frame < pa->time)
+ || (pm->prev && pm->prev->frame >= pa->dietime)) {
+ BKE_ptcache_mem_incr_pointers(pm);
+ continue;
+ }
+ }
}
if(!point->totkey) {
More information about the Bf-blender-cvs
mailing list