need ReMutex

This commit is contained in:
David Rose 2007-07-18 06:48:15 +00:00
parent a2e7037b16
commit 82b5c8ad5a
2 changed files with 8 additions and 6 deletions

View File

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

View File

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