From 415955d46ea550c344aa4d2215b8a790e348eb72 Mon Sep 17 00:00:00 2001 From: Frederic Cervenansky Date: Thu, 15 Oct 2009 07:52:47 +0000 Subject: [PATCH] set vectors of pointers (with many memory leak) as vectors of shared_ptr --- src2/creaImageIOGimmick.cpp | 18 ++++++++++-------- src2/creaImageIOGimmickView.cpp | 22 +++++++++++++++++----- src2/creaImageIOGimmickView.h | 6 ++++-- src2/creaImageIOMultiThreadImageReader.cpp | 20 ++++++++++++++++---- src2/creaImageIOMultiThreadImageReader.h | 1 + src2/creaImageIOSQLiteTreeHandler.cpp | 16 +++------------- src2/creaImageIOTreeDescriptor.h | 1 + src2/creaImageIOTreeHandlerImageAdder.cpp | 5 ++++- src2/creaImageIOTreeNode.cpp | 5 ++++- src2/creaImageIOTreeView.cpp | 1 + src2/creaImageIOVtkImageReader.cpp | 21 +++++++++++++++++++-- src2/creaImageIOWxGimmickFrame.cpp | 6 +++--- src2/creaImageIOWxGimmickFrame.h | 2 +- src2/creaImageIOWxGimmickPanel.cpp | 6 +++--- src2/creaImageIOWxGimmickPanel.h | 2 +- src2/creaImageIOWxGimmickReaderDialog.cpp | 15 ++++++++++----- src2/creaImageIOWxGimmickReaderDialog.h | 4 ++-- src2/creaImageIOWxGimmickView.cpp | 3 ++- src2/creaImageIOWxGimmickView.h | 4 ++-- 19 files changed, 104 insertions(+), 54 deletions(-) diff --git a/src2/creaImageIOGimmick.cpp b/src2/creaImageIOGimmick.cpp index 7d7cca0..877a21e 100644 --- a/src2/creaImageIOGimmick.cpp +++ b/src2/creaImageIOGimmick.cpp @@ -133,14 +133,16 @@ namespace creaImageIO //============================================================== void Gimmick::Finalize() { - - // delete SQLiteTreeHandler Object - for( TreeHandlerMapType::const_iterator it = mTreeHandlerMap.begin(); - it!= mTreeHandlerMap.end(); - ++it) - { - delete it->second; - } + if(mTreeHandlerMap.size() >0) + { + // delete SQLiteTreeHandler Object + for( TreeHandlerMapType::const_iterator it = mTreeHandlerMap.begin(); + it!= mTreeHandlerMap.end(); + ++it) + { + delete it->second; + } + } } //============================================================== diff --git a/src2/creaImageIOGimmickView.cpp b/src2/creaImageIOGimmickView.cpp index e8fdb55..c8064d5 100644 --- a/src2/creaImageIOGimmickView.cpp +++ b/src2/creaImageIOGimmickView.cpp @@ -57,7 +57,7 @@ namespace creaImageIO //====================================================================== // CTor - GimmickView::GimmickView(Gimmick* gimmick, int threads) + GimmickView::GimmickView(boost::shared_ptr gimmick, int threads) : mGimmick(gimmick), mReader(threads) { @@ -85,7 +85,6 @@ namespace creaImageIO /// void GimmickView::Initialize() { - mImageExtent=0; mReaderStarted=false; } //====================================================================== @@ -142,7 +141,7 @@ namespace creaImageIO { if(mImageExtent!=0) { - mImageExtent=0; + // mImageExtent=0; } valid=true; } @@ -176,6 +175,19 @@ namespace creaImageIO } } + //====================================================================== + /// No selected image + bool GimmickView::NoValidateSelected () + { + GimmickDebugMessage(2,"Validating selected"< ie=boost::shared_ptr(new ImageExtent((*sel).GetAttribute("D0028_0010"), (*sel).GetAttribute("D0028_0011"), (*sel).GetAttribute("D0028_0012"), - ""); + "")); if(mImageExtent==0) { mImageExtent=ie; diff --git a/src2/creaImageIOGimmickView.h b/src2/creaImageIOGimmickView.h index 6fca802..389fd07 100644 --- a/src2/creaImageIOGimmickView.h +++ b/src2/creaImageIOGimmickView.h @@ -39,7 +39,7 @@ namespace creaImageIO { public: /// Ctor - GimmickView(Gimmick*, int number_of_threads = 0 ); + GimmickView(boost::shared_ptr, int number_of_threads = 0 ); /// Virtual destructor virtual ~GimmickView(); /// Initializes the view : @@ -96,6 +96,8 @@ namespace creaImageIO { GimmickError("INTERNAL ERROR : SaveAs not implemented"); } + /// No selected image + bool NoValidateSelected(); ///Validates the dimension compliance of the images with the maximum and minimum given, and between their sizes bool ValidateSelected (tree::Node* sel, int min_dim, int max_dim); @@ -191,7 +193,7 @@ namespace creaImageIO //ImageEventQueueType mImageEventQueue; ///The current image extent - ImageExtent* mImageExtent; + boost::shared_ptr mImageExtent; ///The validation signal ValidationSignalType mValidationSignal; ///Boolean that determines if the selection is valid diff --git a/src2/creaImageIOMultiThreadImageReader.cpp b/src2/creaImageIOMultiThreadImageReader.cpp index 7daf740..7dae591 100644 --- a/src2/creaImageIOMultiThreadImageReader.cpp +++ b/src2/creaImageIOMultiThreadImageReader.cpp @@ -3,6 +3,7 @@ #include #include + namespace creaImageIO { @@ -31,12 +32,23 @@ namespace creaImageIO vtkImageData* Read(const std::string& filename); + struct deleter + { + void operator()(ThreadedImageReader* p) + { + p->Delete(); + } + }; + friend struct deleter; + private: ImageReader mReader; MultiThreadImageReader* mMultiThreadImageReader; }; + + //===================================================================== @@ -53,8 +65,8 @@ namespace creaImageIO // Create the threads for (int i=0; i t(new ThreadedImageReader(this)); + //ThreadedImageReader* t = new ThreadedImageReader(this); + boost::shared_ptr t(new ThreadedImageReader(this), ThreadedImageReader::deleter()); mThreadedImageReaderList.push_back(t); std::cout << " ===> Thread "<IsAlive()) { - (*i)->Delete(); + //(*i)->Delete(); } } - mThreadedImageReaderList.clear(); + // mThreadedImageReaderList.clear(); // Wait a little to be sure that all threads have stopped // A better way to do this ? // wxMilliSleep(1000); diff --git a/src2/creaImageIOMultiThreadImageReader.h b/src2/creaImageIOMultiThreadImageReader.h index bd79d04..ac18177 100644 --- a/src2/creaImageIOMultiThreadImageReader.h +++ b/src2/creaImageIOMultiThreadImageReader.h @@ -210,6 +210,7 @@ namespace creaImageIO /// The type of list of threaded readers typedef std::vector > ThreadedImageReaderListType; + //typedef std::vector ThreadedImageReaderListType; ThreadedImageReaderListType mThreadedImageReaderList; /// The number of currently running threaded readers int mNumberOfThreadedReadersRunning; diff --git a/src2/creaImageIOSQLiteTreeHandler.cpp b/src2/creaImageIOSQLiteTreeHandler.cpp index f29a8ce..7f63e39 100644 --- a/src2/creaImageIOSQLiteTreeHandler.cpp +++ b/src2/creaImageIOSQLiteTreeHandler.cpp @@ -1,26 +1,17 @@ #include #include +#include #include "CppSQLite3.h" #include -//#include - -//#include - -//#include - #include -//#include - #include +#include using namespace crea; -#include -#include - namespace creaImageIO { using namespace tree; @@ -362,8 +353,7 @@ namespace creaImageIO command += "Flags int\n"; command += "\n)"; UPDATEDB(command); - - + // Fill the table *_ATTRIBUTES LevelDescriptor::AttributeDescriptorListType::const_iterator i; for (i = GetTree().GetAttributeDescriptorList(l).begin(); diff --git a/src2/creaImageIOTreeDescriptor.h b/src2/creaImageIOTreeDescriptor.h index e6863b1..a7e5b94 100644 --- a/src2/creaImageIOTreeDescriptor.h +++ b/src2/creaImageIOTreeDescriptor.h @@ -44,6 +44,7 @@ namespace creaImageIO GetAttributeDescriptorList(int level) const { return mLevelDescriptorList[level].GetAttributeDescriptorList(); } + /// Adds a LevelDescriptor at the end of the list void Add(const LevelDescriptor&); diff --git a/src2/creaImageIOTreeHandlerImageAdder.cpp b/src2/creaImageIOTreeHandlerImageAdder.cpp index 290da65..e4eeaf4 100644 --- a/src2/creaImageIOTreeHandlerImageAdder.cpp +++ b/src2/creaImageIOTreeHandlerImageAdder.cpp @@ -4,7 +4,10 @@ #include #include - +#include +#ifdef _DEBUG +#define new DEBUG_NEW +#endif namespace fs = boost::filesystem; using boost::filesystem::path; using boost::next; diff --git a/src2/creaImageIOTreeNode.cpp b/src2/creaImageIOTreeNode.cpp index 8b2a29b..e14bc84 100644 --- a/src2/creaImageIOTreeNode.cpp +++ b/src2/creaImageIOTreeNode.cpp @@ -2,7 +2,10 @@ #include #include #include - +#include +#ifdef _DEBUG +#define new DEBUG_NEW +#endif namespace creaImageIO { namespace tree diff --git a/src2/creaImageIOTreeView.cpp b/src2/creaImageIOTreeView.cpp index 2fa1475..d66c8ce 100644 --- a/src2/creaImageIOTreeView.cpp +++ b/src2/creaImageIOTreeView.cpp @@ -1,6 +1,7 @@ #include #include + namespace creaImageIO { // CTor diff --git a/src2/creaImageIOVtkImageReader.cpp b/src2/creaImageIOVtkImageReader.cpp index cd93e86..c4dd1bf 100644 --- a/src2/creaImageIOVtkImageReader.cpp +++ b/src2/creaImageIOVtkImageReader.cpp @@ -2,7 +2,10 @@ #include #include #include "boost/filesystem/path.hpp" - +#include +#ifdef _DEBUG +#define new DEBUG_NEW +#endif namespace creaImageIO { @@ -14,7 +17,12 @@ namespace creaImageIO { if (name.size() == 0) { - SetName ( mReader->GetDescriptiveName() ); + const char *test =mReader->GetDescriptiveName(); + if(test != "") + { + SetName ( "toto");// mReader->GetDescriptiveName()); + } + } else { @@ -38,7 +46,16 @@ namespace creaImageIO //===================================================================== bool VtkImageReader::CanRead(const std::string& filename) { + return (mReader->CanReadFile(filename.c_str())!=0); +/* if(filename != "") + { + return (mReader->CanReadFile(filename.c_str())!=0); + } + else + { + return false; + }*/ } //===================================================================== diff --git a/src2/creaImageIOWxGimmickFrame.cpp b/src2/creaImageIOWxGimmickFrame.cpp index a14a7ee..bbdf226 100644 --- a/src2/creaImageIOWxGimmickFrame.cpp +++ b/src2/creaImageIOWxGimmickFrame.cpp @@ -22,7 +22,7 @@ namespace creaImageIO wxMINIMIZE_BOX | wxCAPTION ), - mGimmick(0), + // mGimmick(0), mView(0) { GimmickDebugMessage(1,"WxGimmickFrame::WxGimmickFrame" @@ -31,7 +31,7 @@ namespace creaImageIO try { - mGimmick = new Gimmick(); + // mGimmick = new Gimmick(); mGimmick->Initialize(); int min_dim = GIMMICK_2D_IMAGE_SELECTION; @@ -70,7 +70,7 @@ namespace creaImageIO if (mGimmick) { mGimmick->Finalize(); - delete mGimmick; +// delete mGimmick; } } diff --git a/src2/creaImageIOWxGimmickFrame.h b/src2/creaImageIOWxGimmickFrame.h index ae99a10..b5e004f 100644 --- a/src2/creaImageIOWxGimmickFrame.h +++ b/src2/creaImageIOWxGimmickFrame.h @@ -42,7 +42,7 @@ namespace creaImageIO // DECLARE_EVENT_TABLE(); private : - Gimmick* mGimmick; + boost::shared_ptr mGimmick; WxGimmickView* mView; }; // class WxGimmickFrame diff --git a/src2/creaImageIOWxGimmickPanel.cpp b/src2/creaImageIOWxGimmickPanel.cpp index f722840..f01f0bf 100644 --- a/src2/creaImageIOWxGimmickPanel.cpp +++ b/src2/creaImageIOWxGimmickPanel.cpp @@ -20,7 +20,7 @@ namespace creaImageIO wxMINIMIZE_BOX | wxCAPTION ), - mGimmick(0), + // mGimmick(0), mView(0) { GimmickDebugMessage(1,"WxGimmickPanel::WxGimmickPanel" @@ -29,7 +29,7 @@ namespace creaImageIO try { - mGimmick = new Gimmick(); + mGimmick = boost::shared_ptr(new Gimmick()); mGimmick->Initialize(); int min_dim = GIMMICK_2D_IMAGE_SELECTION; @@ -70,7 +70,7 @@ namespace creaImageIO if (mGimmick) { mGimmick->Finalize(); - delete mGimmick; +// delete mGimmick; } } diff --git a/src2/creaImageIOWxGimmickPanel.h b/src2/creaImageIOWxGimmickPanel.h index 43a9361..6df7f5c 100644 --- a/src2/creaImageIOWxGimmickPanel.h +++ b/src2/creaImageIOWxGimmickPanel.h @@ -61,7 +61,7 @@ namespace creaImageIO // DECLARE_EVENT_TABLE(); private : - Gimmick* mGimmick; + boost::shared_ptr mGimmick; WxGimmickView* mView; ///The sendImage signal diff --git a/src2/creaImageIOWxGimmickReaderDialog.cpp b/src2/creaImageIOWxGimmickReaderDialog.cpp index fe84eff..933a723 100644 --- a/src2/creaImageIOWxGimmickReaderDialog.cpp +++ b/src2/creaImageIOWxGimmickReaderDialog.cpp @@ -1,6 +1,9 @@ #include #include - +#include +#ifdef _DEBUG +#define new DEBUG_NEW +#endif namespace creaImageIO { @@ -26,7 +29,7 @@ namespace creaImageIO wxMINIMIZE_BOX | wxCAPTION ), - mGimmick(0), + // mGimmick(0), mView(0) { GimmickDebugMessage(1,"WxGimmickReaderDialog::WxGimmickReaderDialog" @@ -35,7 +38,7 @@ namespace creaImageIO try { - mGimmick = new Gimmick(); + mGimmick = boost::shared_ptr(new Gimmick()); mGimmick->Initialize(); @@ -79,12 +82,14 @@ namespace creaImageIO <Finalize(); - delete mGimmick; + mGimmick->Finalize(); + //mGimmick->Finalize(); +// delete mGimmick; } } diff --git a/src2/creaImageIOWxGimmickReaderDialog.h b/src2/creaImageIOWxGimmickReaderDialog.h index fd393ea..8137a73 100644 --- a/src2/creaImageIOWxGimmickReaderDialog.h +++ b/src2/creaImageIOWxGimmickReaderDialog.h @@ -28,7 +28,7 @@ namespace creaImageIO int output_dim = NATIVE, int threads = 0); - Gimmick* GetGimmick() { return mGimmick; } + boost::shared_ptr GetGimmick() { return mGimmick; } // typedef WxGimmick ViewType; typedef WxGimmickView::EventType EventType; @@ -56,7 +56,7 @@ namespace creaImageIO private : - Gimmick* mGimmick; + boost::shared_ptr mGimmick; WxGimmickView* mView; wxButton* mOkButton; diff --git a/src2/creaImageIOWxGimmickView.cpp b/src2/creaImageIOWxGimmickView.cpp index f187dec..3b8d507 100644 --- a/src2/creaImageIOWxGimmickView.cpp +++ b/src2/creaImageIOWxGimmickView.cpp @@ -87,7 +87,7 @@ namespace creaImageIO //====================================================================== // CTor - WxGimmickView::WxGimmickView(Gimmick* gimmick, + WxGimmickView::WxGimmickView(boost::shared_ptr gimmick, wxWindow *parent, const wxWindowID id, const wxPoint& pos, @@ -197,6 +197,7 @@ namespace creaImageIO mViewer->StopPlayer(); GimmickDebugMessage(1,"WxGimmickView::~WxGimmickView" <IsAlive()) { mListener->Delete(); diff --git a/src2/creaImageIOWxGimmickView.h b/src2/creaImageIOWxGimmickView.h index 53dcf77..1325306 100644 --- a/src2/creaImageIOWxGimmickView.h +++ b/src2/creaImageIOWxGimmickView.h @@ -34,7 +34,7 @@ namespace creaImageIO typedef int EventType; /// Ctor - WxGimmickView(Gimmick*, + WxGimmickView(boost::shared_ptr , wxWindow *parent, const wxWindowID id, const wxPoint& pos, const wxSize& size, @@ -138,7 +138,7 @@ namespace creaImageIO wxImageList * mIcon; void CreateIconList(); - Gimmick * mGimmick; + boost::shared_ptr mGimmick; Listener* mListener; /// Callback for adding files -- 2.45.1