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