[Bf-blender-cvs] [ea5326df86c] master: Fix T59958: Blender 2.80 - Removing second Particle System cache causes crash.

Bastien Montagne noreply at git.blender.org
Fri Jan 25 12:32:36 CET 2019


Commit: ea5326df86cba7bb235f623d59cec87bdf9e41b6
Author: Bastien Montagne
Date:   Fri Jan 25 12:31:24 2019 +0100
Branches: master
https://developer.blender.org/rBea5326df86cba7bb235f623d59cec87bdf9e41b6

Fix T59958: Blender 2.80 - Removing second Particle System cache causes crash.

Usual DEG tag missing.

Also do not tag/send notifiers when we do not change anything!

===================================================================

M	source/blender/editors/physics/physics_pointcache.c

===================================================================

diff --git a/source/blender/editors/physics/physics_pointcache.c b/source/blender/editors/physics/physics_pointcache.c
index 58bd761a2a9..e36f2f912bd 100644
--- a/source/blender/editors/physics/physics_pointcache.c
+++ b/source/blender/editors/physics/physics_pointcache.c
@@ -47,6 +47,8 @@
 #include "BKE_particle.h"
 #include "BKE_pointcache.h"
 
+#include "DEG_depsgraph.h"
+
 #include "ED_particle.h"
 
 #include "WM_api.h"
@@ -384,10 +386,11 @@ static int ptcache_add_new_exec(bContext *C, wmOperator *UNUSED(op))
 		PointCache *cache_new = BKE_ptcache_add(pid.ptcaches);
 		cache_new->step = pid.default_step;
 		*(pid.cache_ptr) = cache_new;
-	}
 
-	WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene);
-	WM_event_add_notifier(C, NC_OBJECT|ND_POINTCACHE, ob);
+		DEG_id_tag_update(&ob->id, ID_RECALC_COPY_ON_WRITE);
+		WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene);
+		WM_event_add_notifier(C, NC_OBJECT|ND_POINTCACHE, ob);
+	}
 
 	return OPERATOR_FINISHED;
 }
@@ -404,9 +407,10 @@ static int ptcache_remove_exec(bContext *C, wmOperator *UNUSED(op))
 		BLI_remlink(pid.ptcaches, pid.cache);
 		BKE_ptcache_free(pid.cache);
 		*(pid.cache_ptr) = pid.ptcaches->first;
-	}
 
-	WM_event_add_notifier(C, NC_OBJECT|ND_POINTCACHE, ob);
+		DEG_id_tag_update(&ob->id, ID_RECALC_COPY_ON_WRITE);
+		WM_event_add_notifier(C, NC_OBJECT|ND_POINTCACHE, ob);
+	}
 
 	return OPERATOR_FINISHED;
 }



More information about the Bf-blender-cvs mailing list