mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 10:54:24 -04:00
need ReMutex
This commit is contained in:
parent
a2e7037b16
commit
82b5c8ad5a
@ -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 ©) :
|
||||
{
|
||||
#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()) {
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user