[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54822] trunk/blender/source/blender/ editors/physics/physics_pointcache.c: pointcache: Fix freeing all bakes in particle mode

Sergej Reich sergej.reich at googlemail.com
Sun Feb 24 20:33:11 CET 2013


Revision: 54822
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54822
Author:   sergof
Date:     2013-02-24 19:33:10 +0000 (Sun, 24 Feb 2013)
Log Message:
-----------
pointcache: Fix freeing all bakes in particle mode

Freeing all bakes didn't free edited cache in particle mode, this lead
to unresponsive ui and crashes.

Now use same logic as for freeing single bake.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/physics/physics_pointcache.c

Modified: trunk/blender/source/blender/editors/physics/physics_pointcache.c
===================================================================
--- trunk/blender/source/blender/editors/physics/physics_pointcache.c	2013-02-24 18:48:57 UTC (rev 54821)
+++ trunk/blender/source/blender/editors/physics/physics_pointcache.c	2013-02-24 19:33:10 UTC (rev 54822)
@@ -90,6 +90,20 @@
 	printf("\rbake: done!\n");
 }
 
+static void ptcache_free_bake(PointCache *cache)
+{
+	if (cache->edit) {
+		if (!cache->edit->edited || 1) {// XXX okee("Lose changes done in particle mode?")) {
+			PE_free_ptcache_edit(cache->edit);
+			cache->edit = NULL;
+			cache->flag &= ~PTCACHE_BAKED;
+		}
+	}
+	else {
+		cache->flag &= ~PTCACHE_BAKED;
+	}
+}
+
 static int ptcache_bake_all_exec(bContext *C, wmOperator *op)
 {
 	Main *bmain = CTX_data_main(C);
@@ -139,7 +153,7 @@
 		BKE_ptcache_ids_from_object(&pidlist, base->object, scene, MAX_DUPLI_RECUR);
 
 		for (pid=pidlist.first; pid; pid=pid->next) {
-			pid->cache->flag &= ~PTCACHE_BAKED;
+			ptcache_free_bake(pid->cache);
 		}
 		
 		BLI_freelistN(&pidlist);
@@ -241,15 +255,7 @@
 	PointCache *cache= ptr.data;
 	Object *ob= ptr.id.data;
 
-	if (cache->edit) {
-		if (!cache->edit->edited || 1) {// XXX okee("Lose changes done in particle mode?")) {
-			PE_free_ptcache_edit(cache->edit);
-			cache->edit = NULL;
-			cache->flag &= ~PTCACHE_BAKED;
-		}
-	}
-	else
-		cache->flag &= ~PTCACHE_BAKED;
+	ptcache_free_bake(cache);
 	
 	WM_event_add_notifier(C, NC_OBJECT|ND_POINTCACHE, ob);
 




More information about the Bf-blender-cvs mailing list