#include <OSGChangeList.h>

Member | |
| bool | _bReadOnly |
| UInt32 | _uiAspectId |
| Mode | _listMode |
| std::vector< ChangeEntry > | _vChangedFieldContainers |
| std::vector< IdRefEntry > | _vAddRefdFieldContainers |
| std::vector< IdRefEntry > | _vSubRefdFieldContainers |
| std::vector< IdRefEntry > | _vCreatedFieldContainers |
| std::vector< IdRefEntry > | _vDestroyedFieldContainers |
| static bool | _bReadWriteDefault = false |
Helper | |
| void | clearAll (void) |
| void | swap (ChangeList &list) |
| bool | merge (const ChangeList &list) |
| bool | empty () const |
| void | setAspect (UInt32 uiAspectId) |
| void | setReadOnly (bool bReadOnly) |
| static void | setReadWriteDefault (bool bReadWrite=true) |
Public Types | |
| enum | Mode { Private, Public } |
| typedef std::pair< UInt32, BitVector > | ChangeEntry |
| typedef FieldContainerPtr | RefEntry |
| typedef UInt32 | IdRefEntry |
| typedef std::vector < ChangeEntry >::size_type | changed_size_type |
| typedef std::vector < ChangeEntry > ::const_iterator | changed_const_iterator |
| typedef std::vector < IdRefEntry >::size_type | refd_size_type |
| typedef std::vector < IdRefEntry >::const_iterator | refd_const_iterator |
| typedef std::vector < IdRefEntry >::size_type | idrefd_size_type |
| typedef std::vector < IdRefEntry >::const_iterator | idrefd_const_iterator |
Public Member Functions | |
Constructors | |
| ChangeList (void) | |
Destructor | |
| virtual | ~ChangeList (void) |
Get | |
| changed_size_type | sizeChanged (void) |
| changed_const_iterator | beginChanged (void) const |
| changed_const_iterator | endChanged (void) const |
| refd_size_type | sizeAddRefd (void) |
| refd_const_iterator | beginAddRefd (void) const |
| refd_const_iterator | endAddRefd (void) const |
| refd_size_type | sizeSubRefd (void) |
| refd_const_iterator | beginSubRefd (void) const |
| refd_const_iterator | endSubRefd (void) const |
| idrefd_const_iterator | beginCreated (void) const |
| idrefd_const_iterator | endCreated (void) const |
| idrefd_size_type | sizeCreated (void) const |
| idrefd_const_iterator | beginDestroyed (void) const |
| idrefd_const_iterator | endDestroyed (void) const |
| idrefd_size_type | sizeDestroyed (void) const |
Add | |
| void | addChanged (const FieldContainerPtr &pFieldContainer, BitVector bvWhichField) |
| void | addAddRefd (const FieldContainerPtr &pFieldContainer) |
| void | addSubRefd (const FieldContainerPtr &pFieldContainer) |
| void | addCreated (const UInt32 uiContainerId) |
| void | addDestroyed (const UInt32 uiContainerId) |
Apply | |
| void | applyTo (UInt32 uiAspectId) |
| void | applyToCurrent (void) |
| void | apply (void) |
| void | applyAndClear (void) |
Dump | |
| void | dump (void) |
Reference Counting | |
| void | addRef (void) |
| void | subRef (void) |
| Int32 | getRefCount (void) |
Protected Types | |
| typedef MemoryObject | Inherited |
Private Member Functions | |
| ChangeList (const ChangeList &source) | |
| prohibit default function (move to 'public' if needed) | |
| void | operator= (const ChangeList &source) |
| prohibit default function (move to 'public' if needed) | |
Friends | |
| class | Thread |
Definition at line 66 of file OSGChangeList.h.
| typedef std::pair<UInt32, BitVector> osg::ChangeList::ChangeEntry |
Definition at line 80 of file OSGChangeList.h.
Definition at line 81 of file OSGChangeList.h.
| typedef UInt32 osg::ChangeList::IdRefEntry |
Definition at line 82 of file OSGChangeList.h.
| typedef std::vector<ChangeEntry>::size_type osg::ChangeList::changed_size_type |
Definition at line 84 of file OSGChangeList.h.
| typedef std::vector<ChangeEntry>::const_iterator osg::ChangeList::changed_const_iterator |
Definition at line 85 of file OSGChangeList.h.
| typedef std::vector<IdRefEntry>::size_type osg::ChangeList::refd_size_type |
Definition at line 90 of file OSGChangeList.h.
| typedef std::vector<IdRefEntry>::const_iterator osg::ChangeList::refd_const_iterator |
Definition at line 91 of file OSGChangeList.h.
| typedef std::vector<IdRefEntry>::size_type osg::ChangeList::idrefd_size_type |
Definition at line 93 of file OSGChangeList.h.
| typedef std::vector<IdRefEntry>::const_iterator osg::ChangeList::idrefd_const_iterator |
Definition at line 94 of file OSGChangeList.h.
typedef MemoryObject osg::ChangeList::Inherited [protected] |
Definition at line 196 of file OSGChangeList.h.
| ChangeList::ChangeList | ( | void | ) |
Definition at line 67 of file OSGChangeList.cpp.
00067 : 00068 Inherited ( ), 00069 _bReadOnly (!_bReadWriteDefault), 00070 _uiAspectId (Thread::getAspect()), 00071 _listMode (Public ), 00072 _vChangedFieldContainers ( ), 00073 _vAddRefdFieldContainers ( ), 00074 _vSubRefdFieldContainers ( ), 00075 _vCreatedFieldContainers ( ), 00076 _vDestroyedFieldContainers( ) 00077 { 00078 // Aspect::addList(this, _aspectId); 00079 }
| ChangeList::~ChangeList | ( | void | ) | [virtual] |
| osg::ChangeList::ChangeList | ( | const ChangeList & | source | ) | [private] |
| ChangeList::changed_size_type ChangeList::sizeChanged | ( | void | ) |
Definition at line 91 of file OSGChangeList.cpp.
References _vChangedFieldContainers.
00092 { 00093 return _vChangedFieldContainers.size(); 00094 }
| ChangeList::changed_const_iterator ChangeList::beginChanged | ( | void | ) | const |
Definition at line 96 of file OSGChangeList.cpp.
References _vChangedFieldContainers.
Referenced by merge(), and osg::RemoteAspect::sendSync().
00097 { 00098 return _vChangedFieldContainers.begin(); 00099 }
| ChangeList::changed_const_iterator ChangeList::endChanged | ( | void | ) | const |
Definition at line 101 of file OSGChangeList.cpp.
References _vChangedFieldContainers.
Referenced by merge(), and osg::RemoteAspect::sendSync().
00102 { 00103 return _vChangedFieldContainers.end(); 00104 }
| ChangeList::refd_size_type ChangeList::sizeAddRefd | ( | void | ) |
Definition at line 106 of file OSGChangeList.cpp.
References _vAddRefdFieldContainers.
00107 { 00108 return _vAddRefdFieldContainers.size(); 00109 }
| ChangeList::refd_const_iterator ChangeList::beginAddRefd | ( | void | ) | const |
Definition at line 111 of file OSGChangeList.cpp.
References _vAddRefdFieldContainers.
Referenced by merge(), osg::RemoteAspect::sendSync(), and osg::RemoteAspect::storeChangeList().
00112 { 00113 return _vAddRefdFieldContainers.begin(); 00114 }
| ChangeList::refd_const_iterator ChangeList::endAddRefd | ( | void | ) | const |
Definition at line 116 of file OSGChangeList.cpp.
References _vAddRefdFieldContainers.
Referenced by merge(), osg::RemoteAspect::sendSync(), and osg::RemoteAspect::storeChangeList().
00117 { 00118 return _vAddRefdFieldContainers.end(); 00119 }
| ChangeList::refd_size_type ChangeList::sizeSubRefd | ( | void | ) |
Definition at line 121 of file OSGChangeList.cpp.
References _vSubRefdFieldContainers.
00122 { 00123 return _vSubRefdFieldContainers.size(); 00124 }
| ChangeList::refd_const_iterator ChangeList::beginSubRefd | ( | void | ) | const |
Definition at line 126 of file OSGChangeList.cpp.
References _vSubRefdFieldContainers.
Referenced by merge(), osg::RemoteAspect::sendSync(), and osg::RemoteAspect::storeChangeList().
00127 { 00128 return _vSubRefdFieldContainers.begin(); 00129 }
| ChangeList::refd_const_iterator ChangeList::endSubRefd | ( | void | ) | const |
Definition at line 131 of file OSGChangeList.cpp.
References _vSubRefdFieldContainers.
Referenced by merge(), osg::RemoteAspect::sendSync(), and osg::RemoteAspect::storeChangeList().
00132 { 00133 return _vSubRefdFieldContainers.end(); 00134 }
| ChangeList::idrefd_const_iterator ChangeList::beginCreated | ( | void | ) | const |
Definition at line 136 of file OSGChangeList.cpp.
References _vCreatedFieldContainers.
Referenced by merge(), osg::RemoteAspect::sendSync(), and osg::RemoteAspect::storeChangeList().
00137 { 00138 return _vCreatedFieldContainers.begin(); 00139 }
| ChangeList::idrefd_const_iterator ChangeList::endCreated | ( | void | ) | const |
Definition at line 141 of file OSGChangeList.cpp.
References _vCreatedFieldContainers.
Referenced by merge(), osg::RemoteAspect::sendSync(), and osg::RemoteAspect::storeChangeList().
00142 { 00143 return _vCreatedFieldContainers.end(); 00144 }
| ChangeList::idrefd_size_type ChangeList::sizeCreated | ( | void | ) | const |
Definition at line 146 of file OSGChangeList.cpp.
References _vCreatedFieldContainers.
00147 { 00148 return _vCreatedFieldContainers.size(); 00149 }
| ChangeList::idrefd_const_iterator ChangeList::beginDestroyed | ( | void | ) | const |
Definition at line 151 of file OSGChangeList.cpp.
References _vDestroyedFieldContainers.
Referenced by merge(), osg::RemoteAspect::sendSync(), and osg::RemoteAspect::storeChangeList().
00152 { 00153 return _vDestroyedFieldContainers.begin(); 00154 }
| ChangeList::idrefd_const_iterator ChangeList::endDestroyed | ( | void | ) | const |
Definition at line 156 of file OSGChangeList.cpp.
References _vDestroyedFieldContainers.
Referenced by merge(), osg::RemoteAspect::sendSync(), and osg::RemoteAspect::storeChangeList().
00157 { 00158 return _vDestroyedFieldContainers.end(); 00159 }
| ChangeList::idrefd_size_type ChangeList::sizeDestroyed | ( | void | ) | const |
Definition at line 161 of file OSGChangeList.cpp.
References _vDestroyedFieldContainers.
00162 { 00163 return _vDestroyedFieldContainers.size(); 00164 }
| void ChangeList::addChanged | ( | const FieldContainerPtr & | pFieldContainer, | |
| BitVector | bvWhichField | |||
| ) |
Definition at line 169 of file OSGChangeList.cpp.
References _bReadOnly, _vChangedFieldContainers, clearAll(), osg::FieldContainerPtrBase::getFieldContainerId(), osg::RemoteAspect::restoreChangeList(), osg::RemoteAspect::storeChangeList(), and SWARNING.
Referenced by osg::RemoteAspect::createCurrentStateChangeList(), osg::FieldContainerPtr::endEditNotChanged(), and osg::RemoteAspect::restoreChangeList().
00171 { 00172 if(_bReadOnly == true) 00173 return; 00174 00175 UInt32 uiContainerId(pFieldContainer.getFieldContainerId()); 00176 00177 ChangeEntry tmpEntry (uiContainerId, bvWhichField); 00178 00179 try 00180 { 00181 _vChangedFieldContainers.push_back(tmpEntry); 00182 } 00183 00184 // std::bad_alloc doesn't work. 00185 catch(...) 00186 { 00187 // on windows the maximum vector size is 16777216 well 00188 // vector.max_size() returns 268435455 ???? 00189 // to save some memory we recreate a more compact changelist. 00190 std::vector<ChangeEntry>::size_type oldSize = _vChangedFieldContainers.size(); 00191 SWARNING << "Compacting ChangeList ..." << std::endl; 00192 // should move store/restore in this class, better wait for release 1.5.0 00193 RemoteAspect::storeChangeList(this); 00194 clearAll(); 00195 RemoteAspect::restoreChangeList(this); 00196 SWARNING << "Compacted ChangeList from " << oldSize 00197 << " to " << _vChangedFieldContainers.size() << " entries." << std::endl; 00198 _vChangedFieldContainers.push_back(tmpEntry); 00199 } 00200 }
| void ChangeList::addAddRefd | ( | const FieldContainerPtr & | pFieldContainer | ) |
Definition at line 202 of file OSGChangeList.cpp.
References _bReadOnly, _vAddRefdFieldContainers, and osg::FieldContainerPtrBase::getFieldContainerId().
Referenced by osg::FieldContainerPtrBase::addRef(), osg::RemoteAspect::createCurrentStateChangeList(), and osg::RemoteAspect::restoreChangeList().
00203 { 00204 if(_bReadOnly == true) 00205 return; 00206 00207 UInt32 uiContainerId = pFieldContainer.getFieldContainerId(); 00208 00209 _vAddRefdFieldContainers.push_back(uiContainerId); 00210 }
| void ChangeList::addSubRefd | ( | const FieldContainerPtr & | pFieldContainer | ) |
Definition at line 212 of file OSGChangeList.cpp.
References _bReadOnly, _vSubRefdFieldContainers, and osg::FieldContainerPtrBase::getFieldContainerId().
Referenced by osg::FieldContainerPtrBase::subRef().
00213 { 00214 #if !defined(OSG_FIXED_MFIELDSYNC) 00215 if(_bReadOnly == true) 00216 return; 00217 #endif 00218 00219 UInt32 uiContainerId = pFieldContainer.getFieldContainerId(); 00220 00221 _vSubRefdFieldContainers.push_back(uiContainerId); 00222 }
| void ChangeList::addCreated | ( | const UInt32 | uiContainerId | ) |
Definition at line 224 of file OSGChangeList.cpp.
References _bReadOnly, and _vCreatedFieldContainers.
Referenced by osg::RemoteAspect::createCurrentStateChangeList(), osg::FieldContainer::newPtr(), and osg::RemoteAspect::restoreChangeList().
00225 { 00226 if(_bReadOnly == true) 00227 return; 00228 00229 _vCreatedFieldContainers.push_back(uiContainerId); 00230 }
| void ChangeList::addDestroyed | ( | const UInt32 | uiContainerId | ) |
Definition at line 232 of file OSGChangeList.cpp.
References _bReadOnly, and _vDestroyedFieldContainers.
Referenced by osg::FieldContainerPtrBase::deleteContainers().
00233 { 00234 if(_bReadOnly == true) 00235 return; 00236 00237 _vDestroyedFieldContainers.push_back(uiContainerId); 00238 }
| void ChangeList::clearAll | ( | void | ) |
Definition at line 243 of file OSGChangeList.cpp.
References _vAddRefdFieldContainers, _vChangedFieldContainers, _vCreatedFieldContainers, _vDestroyedFieldContainers, and _vSubRefdFieldContainers.
Referenced by addChanged(), applyAndClear(), applyTo(), osg::RemoteAspect::createCurrentStateChangeList(), osg::ClusterWindow::frameInit(), setAspect(), and osg::PThreadBase::setupChangeList().
00244 { 00245 _vChangedFieldContainers.clear(); 00246 _vAddRefdFieldContainers.clear(); 00247 _vSubRefdFieldContainers.clear(); 00248 00249 _vCreatedFieldContainers .clear(); 00250 _vDestroyedFieldContainers.clear(); 00251 }
| void ChangeList::swap | ( | ChangeList & | list | ) |
Definition at line 253 of file OSGChangeList.cpp.
References _vAddRefdFieldContainers, _vChangedFieldContainers, _vCreatedFieldContainers, _vDestroyedFieldContainers, and _vSubRefdFieldContainers.
00254 { 00255 _vChangedFieldContainers.swap(clist._vChangedFieldContainers); 00256 _vAddRefdFieldContainers.swap(clist._vAddRefdFieldContainers); 00257 _vSubRefdFieldContainers.swap(clist._vSubRefdFieldContainers); 00258 _vCreatedFieldContainers.swap(clist._vCreatedFieldContainers); 00259 _vDestroyedFieldContainers.swap(clist._vDestroyedFieldContainers); 00260 }
| bool ChangeList::merge | ( | const ChangeList & | list | ) |
Definition at line 262 of file OSGChangeList.cpp.
References _vAddRefdFieldContainers, _vChangedFieldContainers, _vCreatedFieldContainers, _vDestroyedFieldContainers, _vSubRefdFieldContainers, beginAddRefd(), beginChanged(), beginCreated(), beginDestroyed(), beginSubRefd(), endAddRefd(), endChanged(), endCreated(), endDestroyed(), and endSubRefd().
Referenced by osg::ClusterWindow::frameInit().
00263 { 00264 bool returnValue = true; 00265 00266 _vChangedFieldContainers.insert(_vChangedFieldContainers.end(), 00267 clist.beginChanged(), 00268 clist.endChanged()); 00269 00270 00271 _vAddRefdFieldContainers.insert(_vAddRefdFieldContainers.end(), 00272 clist.beginAddRefd(), 00273 clist.endAddRefd()); 00274 00275 00276 _vSubRefdFieldContainers.insert(_vSubRefdFieldContainers.end(), 00277 clist.beginSubRefd(), 00278 clist.endSubRefd()); 00279 00280 _vCreatedFieldContainers.insert(_vCreatedFieldContainers.end(), 00281 clist.beginCreated(), 00282 clist.endCreated()); 00283 00284 _vDestroyedFieldContainers.insert(_vDestroyedFieldContainers.end(), 00285 clist.beginDestroyed(), 00286 clist.endDestroyed()); 00287 00288 return returnValue; 00289 }
| bool ChangeList::empty | ( | void | ) | const |
Definition at line 291 of file OSGChangeList.cpp.
References _vAddRefdFieldContainers, _vChangedFieldContainers, _vCreatedFieldContainers, _vDestroyedFieldContainers, and _vSubRefdFieldContainers.
00292 { 00293 return _vChangedFieldContainers.empty() && 00294 _vAddRefdFieldContainers.empty() && 00295 _vSubRefdFieldContainers.empty() && 00296 _vCreatedFieldContainers.empty() && 00297 _vDestroyedFieldContainers.empty(); 00298 }
| void ChangeList::setAspect | ( | UInt32 | uiAspectId | ) |
Definition at line 300 of file OSGChangeList.cpp.
References _uiAspectId, _vAddRefdFieldContainers, _vChangedFieldContainers, _vSubRefdFieldContainers, clearAll(), and SWARNING.
00301 { 00302 if(_vChangedFieldContainers.size() != 0 || 00303 _vAddRefdFieldContainers.size() != 0 || 00304 _vSubRefdFieldContainers.size() != 0) 00305 { 00306 SWARNING << "Changing aspect on non empty changelist, all currrent " 00307 << "entries will be lost" << std::endl; 00308 } 00309 00310 clearAll(); 00311 00312 // OSGAspect::moveList(this, _aspectId, aspectId); 00313 00314 _uiAspectId = uiAspectId; 00315 }
| void ChangeList::setReadOnly | ( | bool | bReadOnly | ) |
Definition at line 317 of file OSGChangeList.cpp.
References _bReadOnly.
00318 { 00319 _bReadOnly = bReadOnly; 00320 }
| void ChangeList::setReadWriteDefault | ( | bool | bReadWrite = true |
) | [static] |
Define whether ChangeLists are created read only by default or not. Per default they are created read only, to not have a memory leak in applications that don't use multiple threads and don't clear the ChangeList. Thus if you want to use the ChangeLists, multiple threads and/or the cluster you have to call ChangeList::setReadOnlyDefault(true).
This function should only be called before osgInit.
Definition at line 330 of file OSGChangeList.cpp.
References _bReadWriteDefault, FWARNING, osg::GlobalSystemState, and osg::Startup.
00331 { 00332 if(GlobalSystemState != Startup) 00333 FWARNING(("setReadWriteDefault: called after startup!\n")); 00334 00335 _bReadWriteDefault = bReadWrite; 00336 }
| void ChangeList::applyTo | ( | UInt32 | uiAspectId | ) |
Definition at line 343 of file OSGChangeList.cpp.
References _bReadOnly, _uiAspectId, _vAddRefdFieldContainers, _vChangedFieldContainers, _vSubRefdFieldContainers, osg::addRefCP(), clearAll(), osg::FieldContainerPtrBase::executeSync(), osg::FieldContainerFactory::getContainer(), osg::ThreadManager::getNumAspects(), osg::NullFC, osg::subRefCP(), SWARNING, and osg::FieldContainerFactory::the().
Referenced by applyToCurrent().
00344 { 00345 UInt32 i; 00346 00347 if(uiAspectId == _uiAspectId) 00348 { 00349 SWARNING << "Sync on the same aspect, ignored " << std::endl; 00350 return; 00351 } 00352 00353 if(uiAspectId >= ThreadManager::getNumAspects()) 00354 { 00355 SWARNING << "Invalid AspectId" << std::endl; 00356 } 00357 00358 _bReadOnly = true; 00359 OSG::Thread::getCurrentChangeList()->setReadOnly(true); 00360 00361 FieldContainerPtr pTmp; 00362 00363 for(i = 0; i < _vChangedFieldContainers.size(); i++) 00364 { 00365 pTmp = FieldContainerFactory::the()->getContainer( 00366 _vChangedFieldContainers[i].first); 00367 00368 if(pTmp == NullFC) 00369 continue; 00370 00371 pTmp.executeSync(_uiAspectId, 00372 uiAspectId, 00373 _vChangedFieldContainers[i].second); 00374 } 00375 00376 for(i = 0; i < _vAddRefdFieldContainers.size(); i++) 00377 { 00378 pTmp = FieldContainerFactory::the()->getContainer( 00379 _vAddRefdFieldContainers[i]); 00380 00381 if(pTmp == NullFC) 00382 continue; 00383 00384 addRefCP(pTmp); 00385 } 00386 00387 for(i = 0; i < _vSubRefdFieldContainers.size(); i++) 00388 { 00389 pTmp = FieldContainerFactory::the()->getContainer( 00390 _vSubRefdFieldContainers[i]); 00391 00392 if(pTmp == NullFC) 00393 continue; 00394 00395 subRefCP(pTmp); 00396 } 00397 00398 clearAll(); 00399 00400 _bReadOnly = false; 00401 OSG::Thread::getCurrentChangeList()->setReadOnly(false); 00402 00403 }
| void ChangeList::applyToCurrent | ( | void | ) |
Definition at line 405 of file OSGChangeList.cpp.
References applyTo(), and osg::PThreadBase::getAspect().
00406 { 00407 applyTo(Thread::getAspect()); 00408 }
| void ChangeList::apply | ( | void | ) |
Definition at line 412 of file OSGChangeList.cpp.
References _bReadOnly, _uiAspectId, _vAddRefdFieldContainers, _vChangedFieldContainers, _vSubRefdFieldContainers, osg::addRefCP(), osg::FieldContainerPtrBase::executeSync(), osg::PThreadBase::getAspect(), osg::FieldContainerFactory::getContainer(), osg::NullFC, osg::subRefCP(), SWARNING, and osg::FieldContainerFactory::the().
Referenced by applyAndClear().
00413 { 00414 UInt32 i; 00415 00416 if(OSG::Thread::getCurrentChangeList() == this) 00417 { 00418 SWARNING << "try to apply current changelist : ignored" << std::endl; 00419 } 00420 00421 _bReadOnly = true; 00422 00423 OSG::Thread::getCurrentChangeList()->setReadOnly(true); 00424 00425 FieldContainerPtr pTmp; 00426 00427 for(i = 0; i < _vChangedFieldContainers.size(); i++) 00428 { 00429 pTmp = FieldContainerFactory::the()->getContainer( 00430 _vChangedFieldContainers[i].first); 00431 00432 if(pTmp == NullFC) 00433 continue; 00434 00435 pTmp.executeSync(_uiAspectId, 00436 Thread::getAspect(), 00437 _vChangedFieldContainers[i].second); 00438 } 00439 00440 #if !defined(OSG_FIXED_MFIELDSYNC) 00441 for(i = 0; i < _vAddRefdFieldContainers.size(); i++) 00442 { 00443 pTmp = FieldContainerFactory::the()->getContainer( 00444 _vAddRefdFieldContainers[i]); 00445 00446 if(pTmp == NullFC) 00447 continue; 00448 00449 addRefCP(pTmp); 00450 } 00451 00452 for(i = 0; i < _vSubRefdFieldContainers.size(); i++) 00453 { 00454 pTmp = FieldContainerFactory::the()->getContainer( 00455 _vSubRefdFieldContainers[i]); 00456 00457 if(pTmp == NullFC) 00458 continue; 00459 00460 subRefCP(pTmp); 00461 } 00462 #endif 00463 00464 _bReadOnly = false; 00465 00466 OSG::Thread::getCurrentChangeList()->setReadOnly(false); 00467 }
| void ChangeList::applyAndClear | ( | void | ) |
| void ChangeList::dump | ( | void | ) |
Definition at line 518 of file OSGChangeList.cpp.
References _uiAspectId, _vAddRefdFieldContainers, _vChangedFieldContainers, _vCreatedFieldContainers, _vDestroyedFieldContainers, _vSubRefdFieldContainers, osg::FieldContainerFactory::getContainer(), osg::NullFC, and osg::FieldContainerFactory::the().
00519 { 00520 UInt32 i; 00521 00522 fprintf(stderr, "CL: %u\n", _uiAspectId); 00523 #if 0 00524 fprintf(stderr, "CLChanged:\n"); 00525 00526 for(i = 0; i < _vChangedFieldContainers.size(); i++) 00527 { 00528 // fprintf(stderr, "\t%d\n", 00529 // _vChangedFieldContainers[i].first.getFieldContainerId()); 00530 fprintf(stderr, "\t%u\n", 00531 _vChangedFieldContainers[i].first); 00532 } 00533 #endif 00534 00535 fprintf(stderr, "CLAdd:\n"); 00536 for(i = 0; i < _vAddRefdFieldContainers.size(); i++) 00537 { 00538 // fprintf(stderr, "\t%d\n", 00539 // _vAddRefdFieldContainers[i].getFieldContainerId()); 00540 fprintf(stderr, "\t%u\n", 00541 _vAddRefdFieldContainers[i]); 00542 } 00543 00544 fprintf(stderr, "CLSub:\n"); 00545 for(i = 0; i < _vSubRefdFieldContainers.size(); i++) 00546 { 00547 // fprintf(stderr, "\t%d\n", 00548 // _vSubRefdFieldContainers[i].getFieldContainerId()); 00549 fprintf(stderr, "\t%u\n", 00550 _vSubRefdFieldContainers[i]); 00551 } 00552 00553 fprintf(stderr, "CLCreate:\n"); 00554 for(i = 0; i < _vCreatedFieldContainers.size(); i++) 00555 { 00556 fprintf(stderr, "\t%u | ", _vCreatedFieldContainers[i]); 00557 00558 FieldContainerPtr pTmp = FieldContainerFactory::the()->getContainer( 00559 _vCreatedFieldContainers[i]); 00560 00561 if(pTmp != NullFC) 00562 { 00563 fprintf(stderr, "%s\n", pTmp->getType().getCName()); 00564 } 00565 else 00566 { 00567 fprintf(stderr, "\n"); 00568 } 00569 } 00570 00571 fprintf(stderr, "CLDestroy:\n"); 00572 for(i = 0; i < _vDestroyedFieldContainers.size(); i++) 00573 { 00574 fprintf(stderr, "\t%u\n", _vDestroyedFieldContainers[i]); 00575 } 00576 }
| void osg::ChangeList::operator= | ( | const ChangeList & | source | ) | [private] |
| void MemoryObject::addRef | ( | void | ) | [inherited] |
Definition at line 64 of file OSGMemoryObject.cpp.
References osg::MemoryObject::_refCount.
Referenced by osg::SharedObjectHandler::getSharedObject(), and osg::SharedObjectHandler::initialize().
00065 { 00066 _refCount++; 00067 }
| void MemoryObject::subRef | ( | void | ) | [inherited] |
| Int32 MemoryObject::getRefCount | ( | void | ) | [inherited] |
Definition at line 77 of file OSGMemoryObject.cpp.
References osg::MemoryObject::_refCount.
00078 { 00079 return _refCount; 00080 }
friend class Thread [friend] |
Definition at line 202 of file OSGChangeList.h.
bool osg::ChangeList::_bReadOnly [private] |
Definition at line 208 of file OSGChangeList.h.
Referenced by addAddRefd(), addChanged(), addCreated(), addDestroyed(), addSubRefd(), apply(), applyTo(), and setReadOnly().
bool ChangeList::_bReadWriteDefault = false [static, private] |
UInt32 osg::ChangeList::_uiAspectId [private] |
Definition at line 211 of file OSGChangeList.h.
Referenced by apply(), applyTo(), dump(), and setAspect().
Mode osg::ChangeList::_listMode [private] |
Definition at line 212 of file OSGChangeList.h.
std::vector<ChangeEntry> osg::ChangeList::_vChangedFieldContainers [private] |
Definition at line 214 of file OSGChangeList.h.
Referenced by addChanged(), apply(), applyTo(), beginChanged(), clearAll(), dump(), empty(), endChanged(), merge(), setAspect(), sizeChanged(), and swap().
std::vector<IdRefEntry> osg::ChangeList::_vAddRefdFieldContainers [private] |
Definition at line 219 of file OSGChangeList.h.
Referenced by addAddRefd(), apply(), applyTo(), beginAddRefd(), clearAll(), dump(), empty(), endAddRefd(), merge(), setAspect(), sizeAddRefd(), and swap().
std::vector<IdRefEntry> osg::ChangeList::_vSubRefdFieldContainers [private] |
Definition at line 220 of file OSGChangeList.h.
Referenced by addSubRefd(), apply(), applyTo(), beginSubRefd(), clearAll(), dump(), empty(), endSubRefd(), merge(), setAspect(), sizeSubRefd(), and swap().
std::vector<IdRefEntry> osg::ChangeList::_vCreatedFieldContainers [private] |
Definition at line 222 of file OSGChangeList.h.
Referenced by addCreated(), beginCreated(), clearAll(), dump(), empty(), endCreated(), merge(), sizeCreated(), and swap().
std::vector<IdRefEntry> osg::ChangeList::_vDestroyedFieldContainers [private] |
Definition at line 223 of file OSGChangeList.h.
Referenced by addDestroyed(), beginDestroyed(), clearAll(), dump(), empty(), endDestroyed(), merge(), sizeDestroyed(), and swap().
1.5.5