Commit: 5ecbc7c0f201af1ef5903a1aa8e1abfd2b853cdd
Author: Bastien Montagne
Date:   Wed Jun 14 15:20:15 2017 +0200
Branches: id_override_static
https://developer.blender.org/rB5ecbc7c0f201af1ef5903a1aa8e1abfd2b853cdd

Merge branch 'master' into id_override_static

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



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

diff --cc source/blender/blenkernel/intern/library_remap.c
index 70233386727,01ad4fb86ce..494c87c8a55
--- a/source/blender/blenkernel/intern/library_remap.c
+++ b/source/blender/blenkernel/intern/library_remap.c
@@@ -730,36 -729,11 +730,15 @@@ void BKE_libblock_free_data(ID *id, con
                IDP_FreeProperty_ex(id->properties, do_id_user);
                MEM_freeN(id->properties);
        }
 +
 +      if (id->override) {
 +              BKE_override_free(&id->override);
 +      }
  }
  
- /**
-  * used in headerbuttons.c image.c mesh.c screen.c sound.c and library.c
-  *
-  * \param do_id_user: if \a true, try to release other ID's 'references' hold 
by \a idv.
-  *                    (only applies to main database)
-  * \param do_ui_user: similar to do_id_user but makes sure UI does not hold 
references to
-  *                    \a id.
-  */
- void BKE_libblock_free_ex(Main *bmain, void *idv, const bool do_id_user, 
const bool do_ui_user)
+ void BKE_libblock_free_datablock(ID *id)
  {
-       ID *id = idv;
-       short type = GS(id->name);
-       ListBase *lb = which_libbase(bmain, type);
- 
-       DAG_id_type_tag(bmain, type);
- 
- #ifdef WITH_PYTHON
-       BPY_id_release(id);
- #endif
- 
-       if (do_id_user) {
-               BKE_libblock_relink_ex(bmain, id, NULL, NULL, true);
-       }
- 
+       const short type = GS(id->name);
        switch (type) {
                case ID_SCE:
                        BKE_scene_free((Scene *)id);
diff --cc source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
index 99041074dfb,55f1f93be6a..0c2f1775dd6
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
@@@ -161,31 -160,9 +161,26 @@@ DepsgraphNodeBuilder::~DepsgraphNodeBui
  {
  }
  
- RootDepsNode *DepsgraphNodeBuilder::add_root_node()
- {
-       return m_graph->add_root_node();
- }
- 
  IDDepsNode *DepsgraphNodeBuilder::add_id_node(ID *id)
  {
 -      return m_graph->add_id_node(id, id->name);
 +      IDDepsNode *id_node = m_graph->find_id_node(id);
 +
 +      if (id_node == NULL) {
 +              id_node = m_graph->add_id_node(id, id->name);
 +
 +              if (id->override != NULL && (id->flag & LIB_AUTOOVERRIDE) != 0) 
{
 +                      ComponentDepsNode *comp_node = 
id_node->add_component(DEG_NODE_TYPE_PARAMETERS, "override_generator");
 +                      comp_node->owner = id_node;
 +
 +                      /* TDOD We most certainly do not want to run this on 
every deg evaluation! Especially not during animation? */
 +                      /* Ideally, putting this in some kind of queue (only 
one entry per ID in whole queue) and consuming it in a
 +                       * low-priority background thread would be ideal, but 
we need to ensure IDs remain valid for the thread? */
 +                      add_operation_node(comp_node, 
function_bind(BKE_override_operations_create, id, false),
 +                                         DEG_OPCODE_OPERATION, 
"override_generator", 0);
 +              }
 +      }
 +
 +      return id_node;
  }
  
  TimeSourceDepsNode *DepsgraphNodeBuilder::add_time_source()

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to