+ProjectionFileDocument::~ProjectionFileDocument()
+{
+ for (int i = 0; i < m_vecpActiveReconstructors.size(); i++) {
+ ThreadedReconstructor* pThreadedReconstructor = m_vecpActiveReconstructors[i];
+ if (pThreadedReconstructor) {
+ pThreadedReconstructor->cancel();
+ }
+ }
+
+ delete m_pProjectionFile;
+}
+
+void
+ProjectionFileDocument::addReconstructor (ThreadedReconstructor* pRecon)
+{
+ wxCriticalSectionLocker locker (m_criticalSection);
+ m_vecpActiveReconstructors.push_back (pRecon);
+}
+
+void
+ProjectionFileDocument::removeReconstructor (ThreadedReconstructor* pRecon)
+{
+ wxCriticalSectionLocker locker (m_criticalSection);
+ for (int i = 0; i < m_vecpActiveReconstructors.size(); i++) {
+ if (m_vecpActiveReconstructors[i] == pRecon)
+ m_vecpActiveReconstructors[i] = NULL;
+ }
+}
+