1 // SALOME VTKViewer : build VTK viewer into Salome desktop
\r
3 // Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
\r
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
\r
6 // This library is free software; you can redistribute it and/or
\r
7 // modify it under the terms of the GNU Lesser General Public
\r
8 // License as published by the Free Software Foundation; either
\r
9 // version 2.1 of the License.
\r
11 // This library is distributed in the hope that it will be useful,
\r
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
\r
14 // Lesser General Public License for more details.
\r
16 // You should have received a copy of the GNU Lesser General Public
\r
17 // License along with this library; if not, write to the Free Software
\r
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
\r
20 // See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
\r
29 #include "VVTK_ImageWriterMgr.h"
\r
30 #include "VVTK_ImageWriter.h"
\r
32 #include <vtkImageData.h>
\r
34 #include <qsemaphore.h>
\r
40 static int MYDEBUG = 0;
\r
42 static int MYDEBUG = 0;
\r
45 //----------------------------------------------------------------------------
\r
47 ::VVTK_ImageWriterMgr()
\r
49 int aMax = std::numeric_limits<int>::max() / 2;
\r
50 mySemaphore = new QSemaphore(aMax);
\r
51 *mySemaphore += aMax;
\r
52 if(MYDEBUG) cout<<"VVTK_ImageWriterMgr::VVTK_ImageWriterMgr "<<
\r
53 "- total = "<<mySemaphore->total()<<
\r
54 "; available = "<<mySemaphore->available()<<endl;
\r
58 //----------------------------------------------------------------------------
\r
60 ::~VVTK_ImageWriterMgr()
\r
67 //----------------------------------------------------------------------------
\r
70 ::StartImageWriter(vtkImageData *theImageData,
\r
71 const std::string& theName,
\r
72 const int theProgressive,
\r
73 const int theQuality)
\r
75 VVTK_ImageWriter *anImageWriter =
\r
76 new VVTK_ImageWriter(mySemaphore,
\r
81 myThreads.push_back(anImageWriter);
\r
83 anImageWriter->start();
\r
88 //----------------------------------------------------------------------------
\r
93 if(MYDEBUG) cout<<"VVTK_ImageWriterMgr::Stop "<<
\r
94 "- total = "<<mySemaphore->total()<<
\r
95 "; available = "<<mySemaphore->available()<<endl;
\r
96 if(MYDEBUG) cout<<"VVTK_ImageWriterMgr::Stop - *mySemaphore += "<<myThreads.size()<<endl;
\r
97 *mySemaphore += myThreads.size();
\r
99 for(size_t anId = 0, anEnd = myThreads.size(); anId < anEnd; anId++){
\r
100 VVTK_ImageWriter* anImageWriter = myThreads[anId];
\r
101 anImageWriter->wait();
\r
102 delete anImageWriter;
\r