X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2Fengine%2FAnyInputPort.cxx;h=6fa9acba5c4421045ae954807b21f557a87043dc;hb=c9208a8ef7f32a620d9650908588320ff159a167;hp=3db6b63297ba49803acdba02210702e1bf6d2428;hpb=e3255204c864201f5bc1aa040d4273ed2f44e8cd;p=modules%2Fyacs.git diff --git a/src/engine/AnyInputPort.cxx b/src/engine/AnyInputPort.cxx index 3db6b6329..6fa9acba5 100644 --- a/src/engine/AnyInputPort.cxx +++ b/src/engine/AnyInputPort.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2006-2016 CEA/DEN, EDF R&D +// Copyright (C) 2006-2019 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -84,16 +84,29 @@ void AnyInputPort::exRestoreInit() _value->incrRef(); } -void AnyInputPort::put(Any *data) +void AnyInputPort::releaseDataUnsafe() { - YACS::BASES::AutoLocker lock(&_mutex); if(_value) _value->decrRef(); + _value = nullptr; +} + +void AnyInputPort::releaseData() +{ + YACS::BASES::AutoLocker lock(&_mutex); + releaseDataUnsafe(); +} + +void AnyInputPort::put(Any *data) +{ + YACS::BASES::AutoLocker lock(&_mutex); + releaseDataUnsafe(); _value=data; - if (_value) { - _value->incrRef(); - DEBTRACE("value ref count: " << _value->getRefCnt()); - } + if (_value) + { + _value->incrRef(); + DEBTRACE("value ref count: " << _value->getRefCnt()); + } } bool AnyInputPort::isEmpty()