[Bf-blender-cvs] [69d710187d5] blender2.8: Fix unreported assert error when change instance modifier
Antonioya
noreply at git.blender.org
Fri Aug 10 13:14:51 CEST 2018
Commit: 69d710187d5ae5e5e8b54761187ef8770f3fbb00
Author: Antonioya
Date: Thu Aug 9 20:48:05 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB69d710187d5ae5e5e8b54761187ef8770f3fbb00
Fix unreported assert error when change instance modifier
Doing very fast change in the number of instances soemtimes get an error of duplicate ghash entry.
===================================================================
M source/blender/draw/engines/gpencil/gpencil_draw_utils.c
===================================================================
diff --git a/source/blender/draw/engines/gpencil/gpencil_draw_utils.c b/source/blender/draw/engines/gpencil/gpencil_draw_utils.c
index 0a805fa9b29..f8a04a06d80 100644
--- a/source/blender/draw/engines/gpencil/gpencil_draw_utils.c
+++ b/source/blender/draw/engines/gpencil/gpencil_draw_utils.c
@@ -1230,19 +1230,33 @@ void DRW_gpencil_populate_datablock(GPENCIL_e_data *e_data, void *vedata, Scene
gpl->runtime.derived_data = (GHash *)BLI_ghash_str_new(gpl->info);
}
- derived_gpf = BLI_ghash_lookup(gpl->runtime.derived_data, ob->id.name);
+ if (BLI_ghash_haskey(gpl->runtime.derived_data, ob->id.name)) {
+ derived_gpf = BLI_ghash_lookup(gpl->runtime.derived_data, ob->id.name);
+ }
+ else {
+ derived_gpf = NULL;
+ }
+
if (derived_gpf == NULL) {
cache->is_dirty = true;
}
if (cache->is_dirty) {
if (derived_gpf != NULL) {
/* first clear temp data */
+ if (BLI_ghash_haskey(gpl->runtime.derived_data, ob->id.name)) {
+ BLI_ghash_remove(gpl->runtime.derived_data, ob->id.name, NULL, NULL);
+ }
+
BKE_gpencil_free_frame_runtime_data(derived_gpf);
- BLI_ghash_remove(gpl->runtime.derived_data, ob->id.name, NULL, NULL);
}
/* create new data */
derived_gpf = BKE_gpencil_frame_duplicate(gpf);
- BLI_ghash_insert(gpl->runtime.derived_data, ob->id.name, derived_gpf);
+ if (!BLI_ghash_haskey(gpl->runtime.derived_data, ob->id.name)) {
+ BLI_ghash_insert(gpl->runtime.derived_data, ob->id.name, derived_gpf);
+ }
+ else {
+ BLI_ghash_reinsert(gpl->runtime.derived_data, ob->id.name, derived_gpf, NULL, NULL);
+ }
}
/* draw onion skins */
More information about the Bf-blender-cvs
mailing list