Browse Source

BVH - fix lockguards for multithread mode

Due to a lack of variable name, the BVH lock guards lifetimes previously did not cover the whole function call.

This is fixed, and the warning message for contention is removed as multithread mode seems to be desired in production in 4.x.
lawnjelly 2 years ago
parent
commit
f42a837e92
1 changed files with 2 additions and 6 deletions
  1. 2 6
      core/math/bvh.h

+ 2 - 6
core/math/bvh.h

@@ -55,7 +55,7 @@
 #include "core/os/mutex.h"
 #include "core/os/mutex.h"
 
 
 #define BVHTREE_CLASS BVH_Tree<T, NUM_TREES, 2, MAX_ITEMS, USER_PAIR_TEST_FUNCTION, USER_CULL_TEST_FUNCTION, USE_PAIRS, BOUNDS, POINT>
 #define BVHTREE_CLASS BVH_Tree<T, NUM_TREES, 2, MAX_ITEMS, USER_PAIR_TEST_FUNCTION, USER_CULL_TEST_FUNCTION, USE_PAIRS, BOUNDS, POINT>
-#define BVH_LOCKED_FUNCTION BVHLockedFunction(&_mutex, BVH_THREAD_SAFE &&_thread_safe);
+#define BVH_LOCKED_FUNCTION BVHLockedFunction _lock_guard(&_mutex, BVH_THREAD_SAFE &&_thread_safe);
 
 
 template <class T, int NUM_TREES = 1, bool USE_PAIRS = false, int MAX_ITEMS = 32, class USER_PAIR_TEST_FUNCTION = BVH_DummyPairTestFunction<T>, class USER_CULL_TEST_FUNCTION = BVH_DummyCullTestFunction<T>, class BOUNDS = AABB, class POINT = Vector3, bool BVH_THREAD_SAFE = true>
 template <class T, int NUM_TREES = 1, bool USE_PAIRS = false, int MAX_ITEMS = 32, class USER_PAIR_TEST_FUNCTION = BVH_DummyPairTestFunction<T>, class USER_CULL_TEST_FUNCTION = BVH_DummyCullTestFunction<T>, class BOUNDS = AABB, class POINT = Vector3, bool BVH_THREAD_SAFE = true>
 class BVH_Manager {
 class BVH_Manager {
@@ -779,11 +779,7 @@ private:
 			// will be compiled out if not set in template
 			// will be compiled out if not set in template
 			if (p_thread_safe) {
 			if (p_thread_safe) {
 				_mutex = p_mutex;
 				_mutex = p_mutex;
-
-				if (!_mutex->try_lock()) {
-					WARN_PRINT("Info : multithread BVH access detected (benign)");
-					_mutex->lock();
-				}
+				_mutex->lock();
 
 
 			} else {
 			} else {
 				_mutex = nullptr;
 				_mutex = nullptr;