changeset 240:d6b714113b80 subsequence

Pull out performAlignment into separate function to ensure DTW storage is freed before mutex released
author Chris Cannam
date Thu, 16 Jul 2020 13:08:10 +0100
parents d61b83c8a79a
children d9650fdabfc1
files src/SubsequenceMatchVampPlugin.cpp src/SubsequenceMatchVampPlugin.h
diffstat 2 files changed, 17 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/SubsequenceMatchVampPlugin.cpp	Thu Jul 16 13:07:46 2020 +0100
+++ b/src/SubsequenceMatchVampPlugin.cpp	Thu Jul 16 13:08:10 2020 +0100
@@ -607,6 +607,22 @@
 #endif
     }
 
+    FeatureSet returnFeatures = performAlignment();
+    
+    if (m_serialise) {
+#ifdef _WIN32
+        ReleaseMutex(mutex);
+#else
+        pthread_mutex_unlock(&mutex);
+#endif
+    }
+
+    return returnFeatures;
+}
+    
+SubsequenceMatchVampPlugin::FeatureSet
+SubsequenceMatchVampPlugin::performAlignment()
+{
     featureseq_t downsampledRef = downsample(m_features[0]);
 
     cerr << "SubsequenceMatchVampPlugin: reference downsampled sequence length = " << downsampledRef.size() << endl;
@@ -717,14 +733,6 @@
             prevy = y;
         }
     }
-    
-    if (m_serialise) {
-#ifdef _WIN32
-        ReleaseMutex(mutex);
-#else
-        pthread_mutex_unlock(&mutex);
-#endif
-    }
 
     return returnFeatures;
 }
--- a/src/SubsequenceMatchVampPlugin.h	Thu Jul 16 13:07:46 2020 +0100
+++ b/src/SubsequenceMatchVampPlugin.h	Thu Jul 16 13:08:10 2020 +0100
@@ -93,6 +93,7 @@
     std::vector<FeatureExtractor> m_featureExtractors;
     std::vector<featureseq_t> m_features; // unconditioned features
 
+    FeatureSet performAlignment();
     featureseq_t downsample(const featureseq_t &);
     
     mutable int m_pathOutNo;