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!
This commit is contained in:
parent
bfa8fcc542
commit
ea5326df86
Notes:
blender-bot
2023-02-14 05:52:32 +01:00
Referenced by commit 8bd55cf3d5
, Ammend to rBea5326df86cb.
Referenced by issue #59958, Blender 2.80 - Removing second Particle System cache causes crash
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue