Commit: 7b9595d366d0477431763ec0dc6f0f7d38cdcf99
Author: Joshua Leung
Date: Wed Nov 8 13:22:25 2017 +1300
Branches: greasepencil-object
https://developer.blender.org/rB7b9595d366d0477431763ec0dc6f0f7d38cdcf99
Fix: Added some more tags/relations in depsgraph to fix crashes when Onion
Skinning is enabled
* id_tag_update_object_data() - Added a case for the GP datablock type
so that depsgraph tagging via the GPencil datablock's RNA properties
works. Previously, only the object.data case (i.e. modifiers) was handled.
This fixes a crash when enabling onion skinning, and a ghost can be shown
on the neighbouring frames.
* DepsgraphRelationBuilder::build_obdata_geom() - Added a relation between
timesource and GP geometry (i.e. where cache rebuild occurs). This fixes
a crash after scrubbing the timeline when onion skinning is enabled
(I'm guessing due to onion skinning suddenly getting re-shown, but the cache
not doesn't contain this info due to the previously being updated for
animation)
===================================================================
M source/blender/depsgraph/intern/builder/deg_builder_relations.cc
M source/blender/depsgraph/intern/depsgraph_tag.cc
===================================================================
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
index e13b73ab566..bc02c0f69c1 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
@@ -1722,6 +1722,14 @@ void DepsgraphRelationBuilder::build_obdata_geom(Main
*bmain, Scene *scene, Obje
case OB_GPENCIL: /* Grease Pencil */
{
+ /* Geometry cache needs to be recalculated on frame
change
+ * (e.g. to fix crashes after scrubbing the timeline
when
+ * onion skinning is enabled, since the ghosts need to
be
+ * re-added to the cache once scrubbing ends)
+ */
+ TimeSourceKey time_key;
+ ComponentKey geometry_key(obdata,
DEG_NODE_TYPE_GEOMETRY);
+ add_relation(time_key, geometry_key, "GP Frame Change");
break;
}
}
diff --git a/source/blender/depsgraph/intern/depsgraph_tag.cc
b/source/blender/depsgraph/intern/depsgraph_tag.cc
index df618bd75bc..478f21966e0 100644
--- a/source/blender/depsgraph/intern/depsgraph_tag.cc
+++ b/source/blender/depsgraph/intern/depsgraph_tag.cc
@@ -184,6 +184,9 @@ void id_tag_update_object_data(Depsgraph *graph, IDDepsNode
*id_node)
case ID_LP:
data_comp =
id_node->find_component(DEG_NODE_TYPE_PARAMETERS);
break;
+ case ID_GD:
+ data_comp =
id_node->find_component(DEG_NODE_TYPE_GEOMETRY);
+ break;
default:
break;
}
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs