Browse Source

need ReMutex

David Rose 18 năm trước cách đây
mục cha
commit
82b5c8ad5a
2 tập tin đã thay đổi với 8 bổ sung6 xóa
  1. 6 5
      panda/src/gobj/geomMunger.cxx
  2. 2 1
      panda/src/gobj/geomMunger.h

+ 6 - 5
panda/src/gobj/geomMunger.cxx

@@ -20,6 +20,7 @@
 #include "geom.h"
 #include "geomCacheManager.h"
 #include "mutexHolder.h"
+#include "reMutexHolder.h"
 #include "pStatTimer.h"
 
 GeomMunger::Registry *GeomMunger::_registry = NULL;
@@ -39,7 +40,7 @@ GeomMunger(GraphicsStateGuardianBase *gsg) :
 {
 #ifndef NDEBUG
   Registry *registry = get_registry();
-  MutexHolder holder(registry->_registry_lock);
+  ReMutexHolder holder(registry->_registry_lock);
   _registered_key = registry->_mungers.end();
 #endif
 }
@@ -55,7 +56,7 @@ GeomMunger(const GeomMunger &copy) :
 {
 #ifndef NDEBUG
   Registry *registry = get_registry();
-  MutexHolder holder(registry->_registry_lock);
+  ReMutexHolder holder(registry->_registry_lock);
   _registered_key = registry->_mungers.end();
 #endif
 }
@@ -475,7 +476,7 @@ register_munger(GeomMunger *munger, Thread *current_thread) {
   // will be automatically deleted when this function returns.
   PT(GeomMunger) pt_munger = munger;
 
-  MutexHolder holder(_registry_lock);
+  ReMutexHolder holder(_registry_lock);
 
   Mungers::iterator mi = _mungers.insert(munger).first;
   GeomMunger *new_munger = (*mi);
@@ -496,7 +497,7 @@ register_munger(GeomMunger *munger, Thread *current_thread) {
 ////////////////////////////////////////////////////////////////////
 void GeomMunger::Registry::
 unregister_munger(GeomMunger *munger) {
-  MutexHolder holder(_registry_lock);
+  ReMutexHolder holder(_registry_lock);
 
   nassertv(munger->is_registered());
   nassertv(munger->_registered_key != _mungers.end());
@@ -513,7 +514,7 @@ unregister_munger(GeomMunger *munger) {
 ////////////////////////////////////////////////////////////////////
 void GeomMunger::Registry::
 unregister_mungers_for_gsg(GraphicsStateGuardianBase *gsg) {
-  MutexHolder holder(_registry_lock);
+  ReMutexHolder holder(_registry_lock);
 
   Mungers::iterator mi = _mungers.begin();
   while (mi != _mungers.end()) {

+ 2 - 1
panda/src/gobj/geomMunger.h

@@ -28,6 +28,7 @@
 #include "indirectCompareTo.h"
 #include "pStatCollector.h"
 #include "pmutex.h"
+#include "reMutex.h"
 #include "pointerTo.h"
 #include "pmap.h"
 #include "pset.h"
@@ -144,7 +145,7 @@ private:
     void unregister_mungers_for_gsg(GraphicsStateGuardianBase *gsg);
 
     Mungers _mungers;
-    Mutex _registry_lock;
+    ReMutex _registry_lock;
   };
 
   // We store the iterator into the above registry, while we are