]> Creatis software - creaImageIO.git/commitdiff
Fixed Multi-thread reader start and stop errors and shows non private columns.
authorcaballero <caballero>
Thu, 2 Apr 2009 11:28:39 +0000 (11:28 +0000)
committercaballero <caballero>
Thu, 2 Apr 2009 11:28:39 +0000 (11:28 +0000)
src2/creaImageIOGimmickView.cpp
src2/creaImageIOGimmickView.h
src2/creaImageIOMultiThreadImageReader.cpp
src2/creaImageIOWxTreeView.cpp

index 16ad8ff9ae8926e23b522ab9ad520810ce983808..c24a7c3c3534638640762fc75d1eaaf1e61b3e0f 100644 (file)
@@ -87,6 +87,7 @@ namespace creaImageIO
   void GimmickView::Initialize()
   {
        mImageExtent=0;
+       mReaderStarted=false;
   }
   //======================================================================
   
@@ -337,7 +338,11 @@ namespace creaImageIO
   void GimmickView::RequestReading(tree::Node* n, 
                                   int prio, int selection_index, ImagePointerHolder *p)
   {
-       mReader.Start();
+         if(!mReaderStarted)
+         {
+               mReader.Start();
+               mReaderStarted=true;
+         }
     ImageEventType t(n,selection_index, p);
     mImageEventMap[n->GetAttribute("FullFileName")] = t;    
     mReader.Request(this,n->GetAttribute("FullFileName"),prio);
index a87602a8bcd28c41b973b89287a8ca018985f5a5..751e5babab42e1e75c6094397151badcbfbac0c0 100644 (file)
@@ -162,9 +162,14 @@ namespace creaImageIO
       typedef std::deque<ImageEventType> ImageEventQueueType;
       //ImageEventQueueType mImageEventQueue;
 
+         ///The current image extent
          ImageExtent* mImageExtent;
+         ///The validation signal
          ValidationSignalType mValidationSignal;
+         ///Boolean that determines if the selection is valid
          bool valid;
+         ///Boolean that determines if the reader has been started
+         bool mReaderStarted;
       
        };
   // EO class GimmickView
index 85bbb4b06b1f374828172b1e413447430b9dab81..9d2c0908384742ad939640f2c4fc7ffa57af412e 100644 (file)
@@ -34,6 +34,7 @@ namespace creaImageIO
   private:
     ImageReader mReader;
     MultiThreadImageReader* mMultiThreadImageReader;
+       
   };
   //=====================================================================
 
@@ -114,7 +115,10 @@ namespace creaImageIO
         i!=mThreadedImageReaderList.end();
         i++)
       {
-       (*i)->Delete();
+                 if((*i)->IsAlive())
+                 {
+                       (*i)->Delete();
+                 }
       }
     mThreadedImageReaderList.clear();
     // Wait a little to be sure that all threads have stopped
index 422a4f57da11a924cf26a2aa732507fa19e2f061..c5eab8f3f8a553a9a834bc6e7079eb94d50c9129 100644 (file)
@@ -124,6 +124,10 @@ namespace creaImageIO
                GimmickDebugMessage(5,"Creating column "<<col<<" : "
                                <<a->GetName()
                                <<std::endl);
+
+               if(a->GetFlags()!=creaImageIO::tree::AttributeDescriptor::PRIVATE)
+               {
+
                if(a->GetName()=="UNKNOWN")
                {
            title = "#";
@@ -142,7 +146,7 @@ namespace creaImageIO
                level.key.push_back(a->GetKey());
                //          ctrl->SetColumnWidth(col, wxLIST_AUTOSIZE );
                col++;
-               
+               }
                
          }
          
@@ -665,7 +669,7 @@ namespace creaImageIO
                {
             break;
                }
-               if(GetCtrl(level)->GetItemState(item, wxLIST_STATE_SELECTED)==0 && item!=0)
+               if(GetCtrl(level)->GetItemState(item, wxLIST_STATE_SELECTED)==0 /*&& item!=0*/)
                {
                        adr = GetCtrl(level)->GetItemData(item);
                        nod = ((ItemData*)adr)->node;