diff framework/Document.cpp @ 665:e19c609a7bec

Update so Document owns the alignment model's input aggregate model
author Chris Cannam
date Thu, 04 Apr 2019 16:17:11 +0100
parents e2715204feaa
children 21673429dba5
line wrap: on
line diff
--- a/framework/Document.cpp	Wed Jan 09 15:25:09 2019 +0000
+++ b/framework/Document.cpp	Thu Apr 04 16:17:11 2019 +0100
@@ -787,6 +787,12 @@
         return;
     }
 
+#ifdef DEBUG_DOCUMENT
+    SVDEBUG << "Document::releaseModel(" << model << ", type "
+            << model->getTypeName() << ", name \""
+            << model->objectName() << "\")" << endl;
+#endif
+    
     if (model == m_mainModel) {
         return;
     }
@@ -803,7 +809,9 @@
             }
         }
     } else if (m_aggregateModels.find(model) != m_aggregateModels.end()) {
+#ifdef DEBUG_DOCUMENT
         SVDEBUG << "Document::releaseModel: is an aggregate model" << endl;
+#endif
         toDelete = true;
     } else { 
         SVCERR << "WARNING: Document::releaseModel: Unfound model "
@@ -879,7 +887,7 @@
 
     if (m_layers.find(layer) == m_layers.end()) {
         SVDEBUG << "Document::deleteLayer: Layer "
-                  << layer << " (" << typeid(layer).name() <<
+                  << layer << " (typeid " << typeid(layer).name() <<
                   ") does not exist, or has already been deleted "
                   << "(this may not be as serious as it sounds)" << endl;
         return;
@@ -888,7 +896,7 @@
     m_layers.erase(layer);
 
 #ifdef DEBUG_DOCUMENT
-    SVDEBUG << "Document::deleteLayer: Removing, now have "
+    SVDEBUG << "Document::deleteLayer: Removing (and about to release model), now have "
               << m_layers.size() << " layers" << endl;
 #endif
 
@@ -1101,12 +1109,12 @@
         // unaligned model just by looking at the model itself,
         // without also knowing what the main model is
         SVDEBUG << "Document::alignModel(" << model << "): is main model, setting appropriately" << endl;
-        rm->setAlignment(new AlignmentModel(model, model, nullptr, nullptr));
+        rm->setAlignment(new AlignmentModel(model, model, nullptr));
         return;
     }
 
-    if (!m_align->alignModel(m_mainModel, rm)) {
-        cerr << "Alignment failed: " << m_align->getError() << endl;
+    if (!m_align->alignModel(this, m_mainModel, rm)) {
+        SVCERR << "Alignment failed: " << m_align->getError() << endl;
         emit alignmentFailed(m_align->getError());
     }
 }