Commit: 55e6d5428d377844ce9f958ae364c5d0b9aefa93
Author: Sergey Sharybin
Date:   Tue Jan 24 12:46:56 2017 +0100
Branches: blender2.8
https://developer.blender.org/rB55e6d5428d377844ce9f958ae364c5d0b9aefa93

Depsgraph: Remove legacy implementation of depsgraph

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

M       source/blender/blenkernel/CMakeLists.txt
M       source/blender/blenkernel/intern/depsgraph.c

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

diff --git a/source/blender/blenkernel/CMakeLists.txt 
b/source/blender/blenkernel/CMakeLists.txt
index 157c4408d6..2ccbed58b0 100644
--- a/source/blender/blenkernel/CMakeLists.txt
+++ b/source/blender/blenkernel/CMakeLists.txt
@@ -535,8 +535,4 @@ endif()
 #      set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /WX")
 #endif()
 
-if(WITH_LEGACY_DEPSGRAPH)
-       add_definitions(-DWITH_LEGACY_DEPSGRAPH)
-endif()
-
 blender_add_lib(bf_blenkernel "${SRC}" "${INC}" "${INC_SYS}")
diff --git a/source/blender/blenkernel/intern/depsgraph.c 
b/source/blender/blenkernel/intern/depsgraph.c
index a834193969..c5b8a18fd6 100644
--- a/source/blender/blenkernel/intern/depsgraph.c
+++ b/source/blender/blenkernel/intern/depsgraph.c
@@ -40,3367 +40,19 @@
 #endif
 
 #include "BLI_utildefines.h"
-#include "BLI_listbase.h"
-#include "BLI_ghash.h"
-#include "BLI_threads.h"
 
-#include "DNA_anim_types.h"
-#include "DNA_camera_types.h"
-#include "DNA_cachefile_types.h"
-#include "DNA_group_types.h"
-#include "DNA_lamp_types.h"
-#include "DNA_lattice_types.h"
-#include "DNA_key_types.h"
-#include "DNA_material_types.h"
-#include "DNA_mesh_types.h"
-#include "DNA_node_types.h"
+#include "DNA_object_types.h"
 #include "DNA_scene_types.h"
-#include "DNA_screen_types.h"
-#include "DNA_windowmanager_types.h"
-#include "DNA_movieclip_types.h"
-#include "DNA_mask_types.h"
-#include "DNA_modifier_types.h"
-#include "DNA_rigidbody_types.h"
 
-#include "BKE_anim.h"
-#include "BKE_animsys.h"
-#include "BKE_action.h"
-#include "BKE_DerivedMesh.h"
-#include "BKE_collision.h"
-#include "BKE_effect.h"
-#include "BKE_fcurve.h"
 #include "BKE_global.h"
-#include "BKE_idcode.h"
-#include "BKE_image.h"
-#include "BKE_key.h"
-#include "BKE_library.h"
 #include "BKE_main.h"
-#include "BKE_node.h"
-#include "BKE_material.h"
-#include "BKE_mball.h"
-#include "BKE_modifier.h"
-#include "BKE_object.h"
-#include "BKE_paint.h"
-#include "BKE_particle.h"
-#include "BKE_pointcache.h"
-#include "BKE_scene.h"
-#include "BKE_screen.h"
-#include "BKE_tracking.h"
 
-#include "GPU_buffers.h"
-
-#include "atomic_ops.h"
-
-#include "depsgraph_private.h"
-
-#include "DEG_depsgraph.h"
-#include "DEG_depsgraph_build.h"
-#include "DEG_depsgraph_debug.h"
-#include "DEG_depsgraph_query.h"
-
-#ifdef WITH_LEGACY_DEPSGRAPH
-
-static SpinLock threaded_update_lock;
-
-void DAG_init(void)
-{
-       BLI_spin_init(&threaded_update_lock);
-       DEG_register_node_types();
-}
-
-void DAG_exit(void)
-{
-       BLI_spin_end(&threaded_update_lock);
-       DEG_free_node_types();
-}
-
-/* Queue and stack operations for dag traversal 
- *
- * the queue store a list of freenodes to avoid successive alloc/dealloc
- */
-
-DagNodeQueue *queue_create(int slots)
-{
-       DagNodeQueue *queue;
-       DagNodeQueueElem *elem;
-       int i;
-       
-       queue = MEM_mallocN(sizeof(DagNodeQueue), "DAG queue");
-       queue->freenodes = MEM_mallocN(sizeof(DagNodeQueue), "DAG queue");
-       queue->count = 0;
-       queue->maxlevel = 0;
-       queue->first = queue->last = NULL;
-       elem = MEM_mallocN(sizeof(DagNodeQueueElem), "DAG queue elem3");
-       elem->node = NULL;
-       elem->next = NULL;
-       queue->freenodes->first = queue->freenodes->last = elem;
-       
-       for (i = 1; i < slots; i++) {
-               elem = MEM_mallocN(sizeof(DagNodeQueueElem), "DAG queue elem4");
-               elem->node = NULL;
-               elem->next = NULL;
-               queue->freenodes->last->next = elem;
-               queue->freenodes->last = elem;
-       }
-       queue->freenodes->count = slots;
-       return queue;
-}
-
-void queue_raz(DagNodeQueue *queue)
-{
-       DagNodeQueueElem *elem;
-       
-       elem = queue->first;
-       if (queue->freenodes->last)
-               queue->freenodes->last->next = elem;
-       else
-               queue->freenodes->first = queue->freenodes->last = elem;
-       
-       elem->node = NULL;
-       queue->freenodes->count++;
-       while (elem->next) {
-               elem = elem->next;
-               elem->node = NULL;
-               queue->freenodes->count++;
-       }
-       queue->freenodes->last = elem;
-       queue->count = 0;
-}
-
-void queue_delete(DagNodeQueue *queue)
-{
-       DagNodeQueueElem *elem;
-       DagNodeQueueElem *temp;
-       
-       elem = queue->first;
-       while (elem) {
-               temp = elem;
-               elem = elem->next;
-               MEM_freeN(temp);
-       }
-       
-       elem = queue->freenodes->first;
-       while (elem) {
-               temp = elem;
-               elem = elem->next;
-               MEM_freeN(temp);
-       }
-       
-       MEM_freeN(queue->freenodes);
-       MEM_freeN(queue);
-}
-
-/* insert in queue, remove in front */
-void push_queue(DagNodeQueue *queue, DagNode *node)
-{
-       DagNodeQueueElem *elem;
-       int i;
-
-       if (node == NULL) {
-               fprintf(stderr, "pushing null node\n");
-               return;
-       }
-       /*fprintf(stderr, "BFS push : %s %d\n", ((ID *) node->ob)->name, 
queue->count);*/
-
-       elem = queue->freenodes->first;
-       if (elem != NULL) {
-               queue->freenodes->first = elem->next;
-               if (queue->freenodes->last == elem) {
-                       queue->freenodes->last = NULL;
-                       queue->freenodes->first = NULL;
-               }
-               queue->freenodes->count--;
-       }
-       else { /* alllocating more */
-               elem = MEM_mallocN(sizeof(DagNodeQueueElem), "DAG queue elem1");
-               elem->node = NULL;
-               elem->next = NULL;
-               queue->freenodes->first = queue->freenodes->last = elem;
-
-               for (i = 1; i < DAGQUEUEALLOC; i++) {
-                       elem = MEM_mallocN(sizeof(DagNodeQueueElem), "DAG queue 
elem2");
-                       elem->node = NULL;
-                       elem->next = NULL;
-                       queue->freenodes->last->next = elem;
-                       queue->freenodes->last = elem;
-               }
-               queue->freenodes->count = DAGQUEUEALLOC;
-                       
-               elem = queue->freenodes->first;
-               queue->freenodes->first = elem->next;
-       }
-       elem->next = NULL;
-       elem->node = node;
-       if (queue->last != NULL)
-               queue->last->next = elem;
-       queue->last = elem;
-       if (queue->first == NULL) {
-               queue->first = elem;
-       }
-       queue->count++;
-}
-
-
-/* insert in front, remove in front */
-void push_stack(DagNodeQueue *queue, DagNode *node)
-{
-       DagNodeQueueElem *elem;
-       int i;
-
-       elem = queue->freenodes->first;
-       if (elem != NULL) {
-               queue->freenodes->first = elem->next;
-               if (queue->freenodes->last == elem) {
-                       queue->freenodes->last = NULL;
-                       queue->freenodes->first = NULL;
-               }
-               queue->freenodes->count--;
-       }
-       else { /* alllocating more */
-               elem = MEM_mallocN(sizeof(DagNodeQueueElem), "DAG queue elem1");
-               elem->node = NULL;
-               elem->next = NULL;
-               queue->freenodes->first = queue->freenodes->last = elem;
-
-               for (i = 1; i < DAGQUEUEALLOC; i++) {
-                       elem = MEM_mallocN(sizeof(DagNodeQueueElem), "DAG queue 
elem2");
-                       elem->node = NULL;
-                       elem->next = NULL;
-                       queue->freenodes->last->next = elem;
-                       queue->freenodes->last = elem;
-               }
-               queue->freenodes->count = DAGQUEUEALLOC;
-                       
-               elem = queue->freenodes->first;
-               queue->freenodes->first = elem->next;
-       }
-       elem->next = queue->first;
-       elem->node = node;
-       queue->first = elem;
-       if (queue->last == NULL)
-               queue->last = elem;
-       queue->count++;
-}
-
-
-DagNode *pop_queue(DagNodeQueue *queue)
-{
-       DagNodeQueueElem *elem;
-       DagNode *node;
-
-       elem = queue->first;
-       if (elem) {
-               queue->first = elem->next;
-               if (queue->last == elem) {
-                       queue->last = NULL;
-                       queue->first = NULL;
-               }
-               queue->count--;
-               if (queue->freenodes->last)
-                       queue->freenodes->last->next = elem;
-               queue->freenodes->last = elem;
-               if (queue->freenodes->first == NULL)
-                       queue->freenodes->first = elem;
-               node = elem->node;
-               elem->node = NULL;
-               elem->next = NULL;
-               queue->freenodes->count++;
-               return node;
-       }
-       else {
-               fprintf(stderr, "return null\n");
-               return NULL;
-       }
-}
-
-DagNode *get_top_node_queue(DagNodeQueue *queue)
-{
-       return queue->first->node;
-}
-
-DagForest *dag_init(void)
-{
-       DagForest *forest;
-       /* use callocN to init all zero */
-       forest = MEM_callocN(sizeof(DagForest), "DAG root");
-       forest->ugly_hack_sorry = true;
-       return forest;
-}
-
-/* isdata = object data... */
-/* XXX this needs to be extended to be more flexible (so that not only objects 
are evaluated via depsgraph)... */
-static void dag_add_driver_relation(AnimData *adt, DagForest *dag, DagNode 
*node, int isdata)
-{
-       FCurve *fcu;
-       DagNode *node1;
-       
-       for (fcu = adt->drivers.first; fcu; fcu = fcu->next) {
-               ChannelDriver *driver = fcu->driver;
-               DriverVar *dvar;
-               int isdata_fcu = (isdata) || (fcu->rna_path && 
strstr(fcu->rna_path, "modifiers["));
-               
-               /* loop over variables to get the target relationships */
-               for (dvar = driver->variables.first; dvar; dvar = dvar->next) {
-                       /* only used targets */
-                       DRIVER_TARGETS_USED_LOOPER(dvar) 
-                       {
-                               if (dtar->id) {
-                                       /* FIXME: other data types need to be 
added here so that they can work! */
-                                       if (GS(dtar->id->name) == ID_OB) {
-                                               Object *ob = (Object *)dtar->id;
-                                               
-                                               /* normal 
channel-drives-channel */
-                                               node1 = dag_get_node(dag, 
dtar->id);
-                                               
-                                               /* check if bone... */
-                                               if ((ob->type == OB_ARMATURE) &&
-                                                   ( ((dtar->rna_path) && 
strstr(dtar->rna_path, "pose.bones[")) ||
-                                                     ((dtar->flag & 
DTAR_FLAG_STRUCT_REF) && (dtar->pchan_name[0])) ))
-                                               {
-                                                       dag_add_relation(dag, 
node1, node, isdata_fcu ? DAG_RL_DATA_DATA : DAG_RL_DATA_OB, "Driver");
-                                               }
-                                               /* check if ob data */
-                                               else if (dtar->rna_path && 
strstr(dtar->rna_path, "data."))
-                                                       dag_add_relation(dag, 
node1, node, isdata_fcu ? DAG_RL_DATA_DATA : DAG_RL_DATA_OB, "Driver");
-                                               /* normal */
-                                               else
-                                                       dag_add_relation(dag, 
node1, node, isdata_fcu ? DAG_RL_OB_DATA : DAG_RL_OB_OB, "Driver");
-                                       }
-                               }
-                       }
-                       DRIVER_TARGETS_LOOPER_END
-               }
-       }
-}
-
-/* XXX: forward def for material driver handling... */
-static void dag_add_material_driver_relations(DagForest *dag, DagNode *node, 
Material *ma);
-
-/* recursive handling for shader nodetree drivers */
-static void dag_add_shader_nodetree_driver_relations(DagForest *dag, DagNode 
*node, bNodeTree *ntree)
-{
-       bNode *n;
-
-       /* nodetree itself */
-       if (ntree->adt) {
-               dag_add_driver_relation(ntree->adt, dag, node, 1);
-       }
-       
-       /* nodetree's nodes... */
-       for (n = ntree->nodes.first; n; n = n->next) {
-               if (n->id) {
-                       if (GS(n->id->name) == ID_MA) {
-                               dag_add_material_driver_relations(dag, node, 
(Material *)n->id);
-                       }
-                       else if (n->type == NODE_GROUP) {
-                               dag_add_shader_nodetree_driver_relations(dag, 
node, (bNodeTree *)n->id);
-                       }
-               }
-       }
-}
-
-/* recursive handling for material drivers */
-static void dag_add_material_driver_relations(DagForest *dag, DagNode *node, 
Material *ma)
-{
-       /* Prevent infinite recursion by checking (and tagging the mat

@@ Diff output truncated at 10240 characters. @@

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

Reply via email to