Show
Ignore:
Timestamp:
04/06/07 00:00:32 (2 years ago)
Author:
vossg
Message:

fixed : improved multi aspect value field deletion

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/mixin-collappse/Source/System/FieldContainer/Base/OSGFieldContainer.inl

    r658 r660  
    100100    if(_iRefCount <= 0) 
    101101    { 
    102         AspectOffsetStore oOffsets; 
    103  
    104102        Thread::getCurrentChangeList()->incSubRefLevel(); 
    105103 
    106         _pAspectStore->fillOffsetArray(oOffsets, this); 
    107  
    108         this->resolveLinks(Thread::getCurrentAspect(), 
    109                            oOffsets); 
     104        this->resolveLinks(); 
    110105 
    111106        Thread::getCurrentChangeList()->decSubRefLevel(); 
    112107 
    113108        Thread::getCurrentChangeList()->addSubRefd(Inherited::getId()); 
     109 
     110#ifdef OSG_MT_CPTR_ASPECT 
     111        _pAspectStore->removePtrForAspect(Thread::getCurrentAspect()); 
     112 
     113        if(_pAspectStore->getRefCount() == 1) 
     114        { 
     115            this->deregister(Inherited::getId()); 
     116            this->onDestroy (Inherited::getId()); 
     117        } 
     118 
     119        OSG::subRef(_pAspectStore); 
     120#else 
     121        this->deregister(Inherited::getId()); 
     122        this->onDestroy (Inherited::getId()); 
     123#endif 
     124 
     125        delete this; 
     126    } 
     127    else 
     128    { 
     129        Thread::getCurrentChangeList()->addSubRefd(Inherited::getId()); 
     130    } 
     131 
     132} 
     133 
     134 
     135inline 
     136void FieldContainer::subReferenceLocalVar(void) 
     137{ 
     138    --_iRefCount; 
     139 
     140    if(_iRefCount <= 0) 
     141    { 
     142 
     143        Thread::getCurrentChangeList()->incSubRefLevel(); 
     144 
     145        this->resolveLinks(); 
     146 
     147        Thread::getCurrentChangeList()->decSubRefLevel(); 
     148 
     149        Thread::getCurrentChangeList()->addSubRefd(Inherited::getId(), 
     150                                                   true); 
    114151 
    115152#ifdef OSG_MT_CPTR_ASPECT