diff data/model/ReadOnlyWaveFileModel.cpp @ 1858:14747f24ad04

Use cancellable serialiser; add some more profiling points
author Chris Cannam
date Thu, 14 May 2020 16:36:48 +0100
parents 73447d746db3
children
line wrap: on
line diff
--- a/data/model/ReadOnlyWaveFileModel.cpp	Thu May 14 16:35:39 2020 +0100
+++ b/data/model/ReadOnlyWaveFileModel.cpp	Thu May 14 16:36:48 2020 +0100
@@ -54,6 +54,8 @@
     m_lastDirectReadStart(0),
     m_lastDirectReadCount(0)
 {
+    Profiler profiler("ReadOnlyWaveFileModel::ReadOnlyWaveFileModel");
+
     SVDEBUG << "ReadOnlyWaveFileModel::ReadOnlyWaveFileModel: path "
             << m_path << ", target rate " << targetRate << endl;
     
@@ -103,6 +105,8 @@
     m_prevCompletion(0),
     m_exiting(false)
 {
+    Profiler profiler("ReadOnlyWaveFileModel::ReadOnlyWaveFileModel (with reader)");
+
     SVDEBUG << "ReadOnlyWaveFileModel::ReadOnlyWaveFileModel: path "
             << m_path << ", with reader" << endl;
     
@@ -117,6 +121,8 @@
 
 ReadOnlyWaveFileModel::~ReadOnlyWaveFileModel()
 {
+    Profiler profiler("ReadOnlyWaveFileModel::~ReadOnlyWaveFileModel");
+    
     PlayParameterRepository::getInstance()->removePlayable
         (getId().untyped);
     
@@ -653,6 +659,9 @@
             sleep(1);
             channels = m_model.getChannelCount();
         }
+        if (m_model.m_exiting) {
+            return;
+        }
     }
 
     Range *range = new Range[2 * channels];
@@ -734,7 +743,8 @@
         first = false;
         if (m_model.m_exiting) break;
         if (updating) {
-            sleep(1);
+            usleep(100000);
+            if (m_model.m_exiting) break;
         }
     }