[Bf-blender-cvs] [7df9934] openvdb: Fix assert failure.
Kévin Dietrich
noreply at git.blender.org
Sun Nov 13 21:44:24 CET 2016
Commit: 7df993425b9078892519ac8e0ad0a6e84d338699
Author: Kévin Dietrich
Date: Wed May 11 14:18:47 2016 +0200
Branches: openvdb
https://developer.blender.org/rB7df993425b9078892519ac8e0ad0a6e84d338699
Fix assert failure.
===================================================================
M intern/cycles/util/util_volume.cpp
M intern/cycles/util/util_volume.h
===================================================================
diff --git a/intern/cycles/util/util_volume.cpp b/intern/cycles/util/util_volume.cpp
index 9f0d4f3..5f9e86b 100644
--- a/intern/cycles/util/util_volume.cpp
+++ b/intern/cycles/util/util_volume.cpp
@@ -67,6 +67,7 @@ void create_isectors_threads(unordered_map<pthread_t, IsectorType *> &isect_map,
}
std::fprintf(stderr, ": %ld isectors, %ld threads\n", isect_map.size(), thread_ids.size());
+ std::cerr << "Self thread: " << my_thread << '\n';
}
template <typename SamplerType, typename AccessorType>
@@ -97,6 +98,7 @@ void create_samplers_threads(unordered_map<pthread_t, SamplerType *> &sampler_ma
}
std::fprintf(stderr, ": %ld samplers, %ld threads\n", sampler_map.size(), thread_ids.size());
+ std::cerr << "Self thread: " << my_thread << '\n';
}
/* ********** OpenVDB floating pointing scalar volume ************ */
diff --git a/intern/cycles/util/util_volume.h b/intern/cycles/util/util_volume.h
index 54701c5..6a52815 100644
--- a/intern/cycles/util/util_volume.h
+++ b/intern/cycles/util/util_volume.h
@@ -160,8 +160,16 @@ public:
{
pthread_t thread = pthread_self();
isect_map::iterator iter = isectors.find(thread);
- assert(iter != isectors.end());
- isector_t *vdb_isect = iter->second;
+
+ isector_t *vdb_isect;
+ /* this is not really thread safe. */
+ if (iter == isectors.end()) {
+ vdb_isect = new isector_t(*main_isector);
+ isectors[thread] = vdb_isect;
+ }
+ else {
+ vdb_isect = iter->second;
+ }
vdb_ray_t::Vec3Type P(ray->P.x, ray->P.y, ray->P.z);
vdb_ray_t::Vec3Type D(ray->D.x, ray->D.y, ray->D.z);
More information about the Bf-blender-cvs
mailing list