diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2016-01-26 16:30:44 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2016-01-27 00:02:06 +0300 |
commit | 7ce61c64cf92165923e8653c76a6b7fcb1322666 (patch) | |
tree | 30ab3c94150241acbaa62627b8c4488c7c11293e /source/blender/blenkernel/intern/pbvh.c | |
parent | 4a0b896671a6661857d1348672f5116d2970843e (diff) |
Cleanup: remove OMP's 'critical' sections in BKE_pbvh_node_add_proxy/free_proxies.
Not so useful now that we use BLI_task! Not sure why those were ever added actually,
readng carefully that code only modified data here is the PBVHNode, which is only
used/affected by one thread at a time ever. And shared read data (PBVH itself) is
not modified during brush execution itself, so it's safe to use it threaded too.
Diffstat (limited to 'source/blender/blenkernel/intern/pbvh.c')
-rw-r--r-- | source/blender/blenkernel/intern/pbvh.c | 36 |
1 files changed, 15 insertions, 21 deletions
diff --git a/source/blender/blenkernel/intern/pbvh.c b/source/blender/blenkernel/intern/pbvh.c index 9b7bc273065..ba56af81674 100644 --- a/source/blender/blenkernel/intern/pbvh.c +++ b/source/blender/blenkernel/intern/pbvh.c @@ -1906,38 +1906,32 @@ PBVHProxyNode *BKE_pbvh_node_add_proxy(PBVH *bvh, PBVHNode *node) { int index, totverts; -#pragma omp critical - { - index = node->proxy_count; + index = node->proxy_count; - node->proxy_count++; + node->proxy_count++; - if (node->proxies) - node->proxies = MEM_reallocN(node->proxies, node->proxy_count * sizeof(PBVHProxyNode)); - else - node->proxies = MEM_mallocN(sizeof(PBVHProxyNode), "PBVHNodeProxy"); + if (node->proxies) + node->proxies = MEM_reallocN(node->proxies, node->proxy_count * sizeof(PBVHProxyNode)); + else + node->proxies = MEM_mallocN(sizeof(PBVHProxyNode), "PBVHNodeProxy"); - BKE_pbvh_node_num_verts(bvh, node, &totverts, NULL); - node->proxies[index].co = MEM_callocN(sizeof(float[3]) * totverts, "PBVHNodeProxy.co"); - } + BKE_pbvh_node_num_verts(bvh, node, &totverts, NULL); + node->proxies[index].co = MEM_callocN(sizeof(float[3]) * totverts, "PBVHNodeProxy.co"); return node->proxies + index; } void BKE_pbvh_node_free_proxies(PBVHNode *node) { -#pragma omp critical - { - for (int p = 0; p < node->proxy_count; p++) { - MEM_freeN(node->proxies[p].co); - node->proxies[p].co = NULL; - } + for (int p = 0; p < node->proxy_count; p++) { + MEM_freeN(node->proxies[p].co); + node->proxies[p].co = NULL; + } - MEM_freeN(node->proxies); - node->proxies = NULL; + MEM_freeN(node->proxies); + node->proxies = NULL; - node->proxy_count = 0; - } + node->proxy_count = 0; } void BKE_pbvh_gather_proxies(PBVH *pbvh, PBVHNode ***r_array, int *r_tot) |