2
0
Эх сурвалжийг харах

Merge pull request #73628 from lawnjelly/bvh_mutex_fix

BVH - fix lockguards for multithread mode
Rémi Verschelde 2 жил өмнө
parent
commit
9c960a8c24
1 өөрчлөгдсөн 2 нэмэгдсэн , 6 устгасан
  1. 2 6
      core/math/bvh.h

+ 2 - 6
core/math/bvh.h

@@ -55,7 +55,7 @@
 #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 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>
 class BVH_Manager {
@@ -779,11 +779,7 @@ private:
 			// will be compiled out if not set in template
 			if (p_thread_safe) {
 				_mutex = p_mutex;
-
-				if (!_mutex->try_lock()) {
-					WARN_PRINT("Info : multithread BVH access detected (benign)");
-					_mutex->lock();
-				}
+				_mutex->lock();
 
 			} else {
 				_mutex = nullptr;