diff --git a/corelib/include/rtabmap/core/Memory.h b/corelib/include/rtabmap/core/Memory.h index b8bf5197..f852b88c 100644 --- a/corelib/include/rtabmap/core/Memory.h +++ b/corelib/include/rtabmap/core/Memory.h @@ -130,7 +130,7 @@ protected: void preUpdate(); void addSignatureToStm(Signature * signature); void clear(); - void moveToTrash(Signature * s); + void moveToTrash(Signature * s, bool saveToDatabase = true); void addSignatureToWm(Signature * signature); Signature * _getSignature(int id) const; diff --git a/corelib/src/Memory.cpp b/corelib/src/Memory.cpp index b11a9aaa..f25d1b8a 100644 --- a/corelib/src/Memory.cpp +++ b/corelib/src/Memory.cpp @@ -1336,7 +1336,7 @@ std::list Memory::getRemovableSignatures(int count, const std::set< return removableSignatures; } -void Memory::moveToTrash(Signature * s) +void Memory::moveToTrash(Signature * s, bool saveToDatabase) { UINFO("id=%d", s?s->id():0); if(s) @@ -1369,7 +1369,8 @@ void Memory::moveToTrash(Signature * s) s->removeNeighbors(); } - if( _dbDriver && + if( saveToDatabase && + _dbDriver && s->id()>0) { _dbDriver->asyncSave(s); @@ -1390,7 +1391,7 @@ const Signature * Memory::getLastSignature() const void Memory::deleteLastLocation() { Signature * lastSignature = _lastSignature; - if(_lastSignature) + if(lastSignature) { UDEBUG("deleting last location %d", lastSignature->id()); const std::set & neighbors = lastSignature->getNeighbors(); @@ -1416,7 +1417,7 @@ void Memory::deleteLastLocation() } lastSignature->setWeight(0); - this->moveToTrash(lastSignature); + this->moveToTrash(lastSignature, false); } }