- Timestamp:
- 04/02/08 14:18:07 (8 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/Carsten_PtrWork2/Source/System/FieldContainer/Base/OSGChangeList.cpp
r1057 r1072 60 60 OSG_USING_NAMESPACE 61 61 62 //#define SILENT63 //#define SILENT_CPTR62 #define SILENT 63 #define SILENT_CPTR 64 64 65 65 #if 1 66 66 void 67 ChangeList::addAdd ExternalRef(UInt32 const uiContainerId)67 ChangeList::addAddReference(UInt32 const uiContainerId) 68 68 { 69 69 #ifdef OSG_ENABLE_VALGRIND_CHECKS … … 72 72 73 73 #ifndef SILENT 74 fprintf(stderr, "ChangeList::addAdd ExternalRef, id [%u] aspect [%u]\n",74 fprintf(stderr, "ChangeList::addAddReference, id [%u] aspect [%u]\n", 75 75 uiContainerId, Thread::getCurrentAspect()); 76 76 #endif … … 78 78 ContainerChangeEntry *pEntry = getNewEntry(); 79 79 80 pEntry->uiEntryDesc = ContainerChangeEntry::Add ExternalReference;80 pEntry->uiEntryDesc = ContainerChangeEntry::AddReference; 81 81 pEntry->uiContainerId = uiContainerId; 82 82 } 83 83 84 84 void 85 ChangeList::addSub ExternalRef(UInt32 const uiContainerId)85 ChangeList::addSubReference(UInt32 const uiContainerId) 86 86 { 87 87 #ifdef OSG_ENABLE_VALGRIND_CHECKS … … 90 90 91 91 #ifndef SILENT 92 fprintf(stderr, "ChangeList::addSub ExternalRef, id [%u] aspect [%u]\n",92 fprintf(stderr, "ChangeList::addSubReference, id [%u] aspect [%u]\n", 93 93 uiContainerId, Thread::getCurrentAspect()); 94 94 #endif … … 96 96 ContainerChangeEntry *pEntry = getNewEntry(); 97 97 98 pEntry->uiEntryDesc = ContainerChangeEntry::Sub ExternalReference;98 pEntry->uiEntryDesc = ContainerChangeEntry::SubReference; 99 99 pEntry->uiContainerId = uiContainerId; 100 100 } … … 108 108 109 109 #ifndef SILENT 110 fprintf(stderr, " Add create, id [%u] aspect [%u]\n",110 fprintf(stderr, "ChangeList::addCreated, id [%u] aspect [%u]\n", 111 111 uiContainerId, Thread::getCurrentAspect()); 112 112 #endif … … 121 121 { 122 122 #ifndef SILENT 123 fprintf(stderr, "Added changed, id [%d] aspect [%u]\n", 124 pEntry->uiContainerId, Thread::getCurrentAspect()); 123 fprintf(stderr, "ChangeList::addUncommited, id [%d] aspect [%u] -- [0x%x] [0x%x]\n", 124 pEntry->uiContainerId, Thread::getCurrentAspect(), 125 pEntry->uiEntryDesc, pEntry->whichField); 125 126 #endif 126 127 OSG_ASSERT(NULL != pEntry); … … 133 134 //BitVector ContainerChangeEntry::defaultVec = TypeTraits<BitVector>::BitsClear; 134 135 135 void ContainerChangeEntry::commitChanges( void)136 void ContainerChangeEntry::commitChanges(FieldContainerPtr pObj) 136 137 { 137 138 #ifdef OSG_ENABLE_VALGRIND_CHECKS 138 139 VALGRIND_CHECK_VALUE_IS_DEFINED(uiContainerId); 139 140 #endif 140 FieldContainerPtr pTmp = 141 FieldContainerFactory::the()->getContainer(uiContainerId); 142 143 if(pTmp != NullFC) 141 142 if(pObj != NullFC) 144 143 { 145 144 #ifndef SILENT 146 fprintf(stderr, " Commitfor [%u] [%s]\n",147 uiContainerId, p Tmp->getType().getCName());145 fprintf(stderr, "commitChanges for [%u] [%s]\n", 146 uiContainerId, pObj->getType().getCName()); 148 147 #endif 149 148 … … 159 158 whichField |= *bvUncommittedChanges; 160 159 *bvUncommittedChanges = TypeTraits<BitVector>::BitsClear; 161 162 pTmp->changed (tmpChanges, ChangedOrigin::Commit, 0); 160 161 #ifndef SILENT 162 fprintf(stderr, "commitChanges for [%u] [%s] -- [0x%x]\n", 163 uiContainerId, pObj->getType().getCName(), 164 whichField); 165 #endif 166 167 pObj->changed (tmpChanges, ChangedOrigin::Commit, 0); 163 168 } 164 169 } … … 314 319 OSG_ASSERT(NULL != (*changesIt)); 315 320 316 if((*changesIt)->uiEntryDesc == ContainerChangeEntry::Change) 321 FieldContainerPtr pObj = 322 FieldContainerFactory::the()->getContainer( 323 (*changesIt)->uiContainerId); 324 325 if(0x0000 != ((*changesIt)->uiEntryDesc & 326 ContainerChangeEntry::Change)) 317 327 { 318 ((*changesIt)->*func)(); 328 ((*changesIt)->*func)(pObj); 329 } 330 331 if(0x0000 != ((*changesIt)->uiEntryDesc & 332 ContainerChangeEntry::ResolveCandidate)) 333 { 334 (*changesIt)->uiEntryDesc &= ~ContainerChangeEntry::ResolveCandidate; 335 336 OSG_ASSERT(pObj != NULL); 337 338 pObj->handleResolve(); 339 } 340 341 if(0x0000 != ((*changesIt)->uiEntryDesc & 342 ContainerChangeEntry::DestroyCandidate)) 343 { 344 (*changesIt)->uiEntryDesc &= ~ContainerChangeEntry::DestroyCandidate; 345 346 OSG_ASSERT(pObj != NULL); 347 348 pObj->handleDestroyAspect(); 319 349 } 320 350 … … 439 469 440 470 #ifndef SILENT_CPTR 441 fprintf(stderr, "process changes for %d %p %s %p %s\n",471 fprintf(stderr, "process changes for %d 0x%x %p %s %p %s\n", 442 472 (*cIt)->uiContainerId, 473 (*cIt)->uiEntryDesc, 443 474 pSrc, 444 475 pSrc != NULL ? pSrc->getType().getCName() : "null", … … 460 491 461 492 #ifndef SILENT_CPTR 462 fprintf(stderr, "Xprocess changes for %d %p %s %p %s | %d %d %p\n",493 fprintf(stderr, "Xprocess changes for %d 0x%x %p %s %p %s | %d %d %p\n", 463 494 (*cIt)->uiContainerId, 495 (*cIt)->uiEntryDesc, 464 496 pSrc, 465 497 pSrc != NULL ? pSrc->getType().getCName() : "null", … … 471 503 #endif 472 504 473 if((*cIt)->uiEntryDesc == ContainerChangeEntry::Change) 474 { 505 if(0x0000 != ((*cIt)->uiEntryDesc & ContainerChangeEntry::Change)) 506 { 507 #ifndef SILENT_CPTR 508 fprintf(stderr, "ChangeList::doApply: Change\n"); 509 #endif 510 475 511 if(pSrc != NULL && pDst != NULL) // be safe for now 476 512 { … … 495 531 syncMode, 496 532 uiSInfo); 497 498 if(bClear == true)499 {500 pSrc->clearChangeEntry(*cIt);501 }502 533 } 503 534 } 504 535 536 if(0x0000 != ((*cIt)->uiEntryDesc & ContainerChangeEntry::AddReference)) 537 { 538 #ifndef SILENT_CPTR 539 fprintf(stderr, "ChangeList::doApply: AddReference\n"); 540 #endif 541 pDst->addReference(); 542 } 543 544 if(0x0000 != ((*cIt)->uiEntryDesc & ContainerChangeEntry::SubReference)) 545 { 546 #ifndef SILENT_CPTR 547 fprintf(stderr, "ChangeList::doApply: SubReference\n"); 548 #endif 549 pDst->subReference(); 550 } 551 552 if((bClear == true) && (pSrc != NULL)) 553 { 554 pSrc->clearChangeEntry(*cIt); 555 } 556 505 557 ++cIt; 506 558 } … … 569 621 while(cIt != cEnd) 570 622 { 571 if((*cIt)->uiEntryDesc == ContainerChangeEntry::AddExternalReference || 572 (*cIt)->uiEntryDesc == ContainerChangeEntry::SubExternalReference ) 623 if((*cIt)->uiEntryDesc == ContainerChangeEntry::AddReference || 624 (*cIt)->uiEntryDesc == ContainerChangeEntry::SubReference || 625 (*cIt)->uiEntryDesc == ContainerChangeEntry::ResolveCandidate || 626 (*cIt)->uiEntryDesc == ContainerChangeEntry::DestroyCandidate ) 573 627 { 574 628 ContainerChangeEntry *pEntry = getNewEntry(); … … 612 666 this->addCreated(i); 613 667 614 for(UInt32 j = 0; j < pContainer->get ExternalRefCount(); ++j)615 this->addAdd ExternalRef(i);668 for(UInt32 j = 0; j < pContainer->getRefCount(); ++j) 669 this->addAddReference(i); 616 670 617 671 ContainerChangeEntry *pEntry = this->getNewEntry();
