Salome HOME
Merge from branch CCRT_Port_V220.
[modules/kernel.git] / src / SALOMEDS / SALOMEDS_AttributeTarget_i.cxx
index 80b1c2e66a8ba7c2b952c349eb05ce883c53e9fd..0f44433b97fce45ecf7cc5d7368d4616debfa7dd 100644 (file)
 
 #include "SALOMEDS_AttributeTarget_i.hxx"
 #include "SALOMEDS_SObject_i.hxx"
+#include "SALOMEDS.hxx"
 
 using namespace std;
 
 void SALOMEDS_AttributeTarget_i::Add(SALOMEDS::SObject_ptr anObject)
 {
+  SALOMEDS::Locker lock;
+
   TDF_Label aLabel;
   TDF_Tool::Label(_myAttr->Label().Data(),anObject->GetID(),aLabel,1);
   _myAttr->Append(aLabel);
 }
 
 SALOMEDS::Study::ListOfSObject* SALOMEDS_AttributeTarget_i::Get() {
+  SALOMEDS::Locker lock;
+
   TDF_LabelList aLList;
 
   _myAttr->Get(aLList);
@@ -57,13 +62,14 @@ SALOMEDS::Study::ListOfSObject* SALOMEDS_AttributeTarget_i::Get() {
   SALOMEDS_Study_i* aStudy = _mySObject->GetStudyServant();
   for(int index = 0; anIter.More(); anIter.Next(), index++){
     const TDF_Label& aLabel = anIter.Value();
-    SALOMEDS_SObject_i* anSO = SALOMEDS_SObject_i::New(aStudy,aLabel);
-    aSList[index] = anSO->_this();
+    aSList[index] = SALOMEDS_SObject_i::NewRef(aStudy,aLabel)._retn();
   }
   return aSList._retn();
 }
 
 void SALOMEDS_AttributeTarget_i::Remove(SALOMEDS::SObject_ptr anObject) {
+  SALOMEDS::Locker lock;
+
   TDF_Label aLabel;
   CORBA::String_var anID = anObject->GetID();
   TDF_Tool::Label(_myAttr->Label().Data(),anID.inout(),aLabel,1);