diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-04-09 16:54:13 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-04-10 15:49:49 +0400 |
commit | f93bc7693a530632455d3ec7acc4bce54a1f85bc (patch) | |
tree | d0e067438cbc547875b3cb77e53904c5ea2a537d /source/blender/blenkernel/intern/depsgraph.c | |
parent | 19e627cab34a04a3d01b2e3a868b7bf91d56e8f9 (diff) |
Backport revisions for the 2.70a releasev2.70a
d2660a0, 6e99fb0, 58c22d8, 83f2012 + ff21f6a, a7ed1db. cc6b106
7997e38, 9d4b54b, efb48fc, 3fc293c, 29f359c, 77c1d17, 92a539e,
c626462, f48828b, 6452d9f, 765d077, 74518b2, af16d46, 8da4936,
6babbf5, f0106d2, f88776b, ee72cba, 467596d, e21a7b3, eed3974,
71a2ff1, ccf9afd, 44d6c68, 30fdfc3, b69809c, b0a8e4c, bd57ec6,
3b0832d, 2a25676, 3977b76, fb25a86, 9bbb30b, 51abc2b, 0ebade5,
2c0e32f, 3deaf7d, ea01b24, c61eb64, f3db038, a6fb670, eedde31,
b66a954, 7ff123c, f5b79df, 7148c97, 54a8753, fcaa018, 4c73001,
7a21330, 07578be, e9a64e2, fd3de8b, ae792e9, b7712a7 + 3600622,
d9557d0, 6d973b8, 688257d, 4acb57a, 95ac6bc,
Also backported openmp changes to sculpt making it so number
of real CPU cores is used as a number of threads here.
Diffstat (limited to 'source/blender/blenkernel/intern/depsgraph.c')
-rw-r--r-- | source/blender/blenkernel/intern/depsgraph.c | 36 |
1 files changed, 17 insertions, 19 deletions
diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c index af321302984..dc467a5f215 100644 --- a/source/blender/blenkernel/intern/depsgraph.c +++ b/source/blender/blenkernel/intern/depsgraph.c @@ -305,6 +305,7 @@ 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; } @@ -995,7 +996,6 @@ DagNode *dag_find_node(DagForest *forest, void *fob) return NULL; } -static int ugly_hack_sorry = 1; /* prevent type check */ static int dag_print_dependencies = 0; /* debugging */ /* no checking of existence, use dag_find_node first or dag_get_node */ @@ -1008,7 +1008,7 @@ DagNode *dag_add_node(DagForest *forest, void *fob) node->ob = fob; node->color = DAG_WHITE; - if (ugly_hack_sorry) node->type = GS(((ID *) fob)->name); /* sorry, done for pose sorting */ + if (forest->ugly_hack_sorry) node->type = GS(((ID *) fob)->name); /* sorry, done for pose sorting */ if (forest->numNodes) { ((DagNode *) forest->DagNode.last)->next = node; forest->DagNode.last = node; @@ -1116,28 +1116,28 @@ void dag_add_relation(DagForest *forest, DagNode *fob1, DagNode *fob2, short rel fob1->child = itA; } -static const char *dag_node_name(DagNode *node) +static const char *dag_node_name(DagForest *dag, DagNode *node) { if (node->ob == NULL) return "null"; - else if (ugly_hack_sorry) + else if (dag->ugly_hack_sorry) return ((ID *)(node->ob))->name + 2; else return ((bPoseChannel *)(node->ob))->name; } -static void dag_node_print_dependencies(DagNode *node) +static void dag_node_print_dependencies(DagForest *dag, DagNode *node) { DagAdjList *itA; - printf("%s depends on:\n", dag_node_name(node)); + printf("%s depends on:\n", dag_node_name(dag, node)); for (itA = node->parent; itA; itA = itA->next) - printf(" %s through %s\n", dag_node_name(itA->node), itA->name); + printf(" %s through %s\n", dag_node_name(dag, itA->node), itA->name); printf("\n"); } -static int dag_node_print_dependency_recurs(DagNode *node, DagNode *endnode) +static int dag_node_print_dependency_recurs(DagForest *dag, DagNode *node, DagNode *endnode) { DagAdjList *itA; @@ -1150,8 +1150,8 @@ static int dag_node_print_dependency_recurs(DagNode *node, DagNode *endnode) return 1; for (itA = node->parent; itA; itA = itA->next) { - if (dag_node_print_dependency_recurs(itA->node, endnode)) { - printf(" %s depends on %s through %s.\n", dag_node_name(node), dag_node_name(itA->node), itA->name); + if (dag_node_print_dependency_recurs(dag, itA->node, endnode)) { + printf(" %s depends on %s through %s.\n", dag_node_name(dag, node), dag_node_name(dag, itA->node), itA->name); return 1; } } @@ -1166,8 +1166,8 @@ static void dag_node_print_dependency_cycle(DagForest *dag, DagNode *startnode, for (node = dag->DagNode.first; node; node = node->next) node->color = DAG_WHITE; - printf(" %s depends on %s through %s.\n", dag_node_name(endnode), dag_node_name(startnode), name); - dag_node_print_dependency_recurs(startnode, endnode); + printf(" %s depends on %s through %s.\n", dag_node_name(dag, endnode), dag_node_name(dag, startnode), name); + dag_node_print_dependency_recurs(dag, startnode, endnode); printf("\n"); } @@ -1201,7 +1201,7 @@ static void dag_check_cycle(DagForest *dag) /* debugging print */ if (dag_print_dependencies) for (node = dag->DagNode.first; node; node = node->next) - dag_node_print_dependencies(node); + dag_node_print_dependencies(dag, node); /* tag nodes unchecked */ for (node = dag->DagNode.first; node; node = node->next) @@ -2836,7 +2836,7 @@ void DAG_pose_sort(Object *ob) int skip = 0; dag = dag_init(); - ugly_hack_sorry = 0; /* no ID structs */ + dag->ugly_hack_sorry = false; /* no ID structs */ rootnode = dag_add_node(dag, NULL); /* node->ob becomes NULL */ @@ -2963,8 +2963,6 @@ void DAG_pose_sort(Object *ob) free_forest(dag); MEM_freeN(dag); - - ugly_hack_sorry = 1; } /* ************************ DAG FOR THREADED UPDATE ********************* */ @@ -3083,14 +3081,14 @@ Object *DAG_get_node_object(void *node_v) } /* Returns node name, used for debug output only, atm. */ -const char *DAG_get_node_name(void *node_v) +const char *DAG_get_node_name(Scene *scene, void *node_v) { DagNode *node = node_v; - return dag_node_name(node); + return dag_node_name(scene->theDag, node); } -short DAG_get_eval_flags_for_object(struct Scene *scene, void *object) +short DAG_get_eval_flags_for_object(Scene *scene, void *object) { DagNode *node; |