diff --git a/Code/IO/otbJPEG2000ImageIO.cxx b/Code/IO/otbJPEG2000ImageIO.cxx index 89e868f58a4e9668b0c1ed0a94aebaa3a273d08d..fcab990f26a698f68d893a1896b25b976352b769 100644 --- a/Code/IO/otbJPEG2000ImageIO.cxx +++ b/Code/IO/otbJPEG2000ImageIO.cxx @@ -46,8 +46,6 @@ extern "C" #include "otbTinyXML.h" -#include <boost/shared_ptr.hpp> - void OpjImageDestroy(opj_image_t * img) { if(img) @@ -722,9 +720,9 @@ JPEG2000ImageIO::JPEG2000ImageIO() for(int i = 0; i<m_NumberOfThreads; ++i) { - m_InternalReaders.push_back(new JPEG2000InternalReader); + m_InternalReaders.push_back(boost::shared_ptr<JPEG2000InternalReader>(new JPEG2000InternalReader)); } - m_TileCache = new JPEG2000TileCache; + m_TileCache = boost::shared_ptr<JPEG2000TileCache>(new JPEG2000TileCache); // By default set number of dimensions to two. this->SetNumberOfDimensions(2); @@ -745,19 +743,7 @@ JPEG2000ImageIO::JPEG2000ImageIO() } JPEG2000ImageIO::~JPEG2000ImageIO() -{ - for(ReaderVectorType::iterator it = m_InternalReaders.begin(); - it != m_InternalReaders.end(); - ++it) - { - (*it)->Clean(); - delete (*it); - } - m_InternalReaders.clear(); - - m_TileCache->Clear(); - delete m_TileCache; -} +{} bool JPEG2000ImageIO::CanReadFile(const char* filename) { @@ -808,7 +794,7 @@ void JPEG2000ImageIO::ReadVolume(void*) /** Internal structure used for passing image data into the threading library */ struct ThreadStruct { - std::vector<JPEG2000InternalReader *> Readers; + std::vector<boost::shared_ptr<JPEG2000InternalReader> > Readers; std::vector<JPEG2000TileCache::CachedTileType> * Tiles; }; @@ -1125,7 +1111,7 @@ ITK_THREAD_RETURN_TYPE JPEG2000ImageIO::ThreaderCallback( void *arg ) str = (ThreadStruct *)(((itk::MultiThreader::ThreadInfoStruct *)(arg))->UserData); // Retrieve data - std::vector<JPEG2000InternalReader *> readers = str->Readers; + std::vector<boost::shared_ptr<JPEG2000InternalReader> > readers = str->Readers; std::vector<JPEG2000TileCache::CachedTileType> * tiles = str->Tiles; total = std::min((unsigned int)tiles->size(), threadCount); diff --git a/Code/IO/otbJPEG2000ImageIO.h b/Code/IO/otbJPEG2000ImageIO.h index dd5bfe9a240a6feb3e6667fac058ad2a94a81352..b5b0cd817ef104e5905bc3554ccc5d3b18a63458 100644 --- a/Code/IO/otbJPEG2000ImageIO.h +++ b/Code/IO/otbJPEG2000ImageIO.h @@ -21,6 +21,7 @@ #include "otbImageIOBase.h" #include "itkMultiThreader.h" +#include <boost/shared_ptr.hpp> namespace otb { @@ -124,10 +125,10 @@ protected: void PrintSelf(std::ostream& os, itk::Indent indent) const; - typedef std::vector<JPEG2000InternalReader *> ReaderVectorType; + typedef std::vector<boost::shared_ptr<JPEG2000InternalReader> > ReaderVectorType; - ReaderVectorType m_InternalReaders; - JPEG2000TileCache* m_TileCache; + ReaderVectorType m_InternalReaders; + boost::shared_ptr<JPEG2000TileCache> m_TileCache; private: JPEG2000ImageIO(const Self &); //purposely not implemented