comparison 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
comparison
equal deleted inserted replaced
1857:14c776dad920 1858:14747f24ad04
52 m_prevCompletion(0), 52 m_prevCompletion(0),
53 m_exiting(false), 53 m_exiting(false),
54 m_lastDirectReadStart(0), 54 m_lastDirectReadStart(0),
55 m_lastDirectReadCount(0) 55 m_lastDirectReadCount(0)
56 { 56 {
57 Profiler profiler("ReadOnlyWaveFileModel::ReadOnlyWaveFileModel");
58
57 SVDEBUG << "ReadOnlyWaveFileModel::ReadOnlyWaveFileModel: path " 59 SVDEBUG << "ReadOnlyWaveFileModel::ReadOnlyWaveFileModel: path "
58 << m_path << ", target rate " << targetRate << endl; 60 << m_path << ", target rate " << targetRate << endl;
59 61
60 m_source.waitForData(); 62 m_source.waitForData();
61 63
101 m_updateTimer(nullptr), 103 m_updateTimer(nullptr),
102 m_lastFillExtent(0), 104 m_lastFillExtent(0),
103 m_prevCompletion(0), 105 m_prevCompletion(0),
104 m_exiting(false) 106 m_exiting(false)
105 { 107 {
108 Profiler profiler("ReadOnlyWaveFileModel::ReadOnlyWaveFileModel (with reader)");
109
106 SVDEBUG << "ReadOnlyWaveFileModel::ReadOnlyWaveFileModel: path " 110 SVDEBUG << "ReadOnlyWaveFileModel::ReadOnlyWaveFileModel: path "
107 << m_path << ", with reader" << endl; 111 << m_path << ", with reader" << endl;
108 112
109 m_reader = reader; 113 m_reader = reader;
110 if (m_reader) setObjectName(m_reader->getTitle()); 114 if (m_reader) setObjectName(m_reader->getTitle());
115 (getId().untyped, this); 119 (getId().untyped, this);
116 } 120 }
117 121
118 ReadOnlyWaveFileModel::~ReadOnlyWaveFileModel() 122 ReadOnlyWaveFileModel::~ReadOnlyWaveFileModel()
119 { 123 {
124 Profiler profiler("ReadOnlyWaveFileModel::~ReadOnlyWaveFileModel");
125
120 PlayParameterRepository::getInstance()->removePlayable 126 PlayParameterRepository::getInstance()->removePlayable
121 (getId().untyped); 127 (getId().untyped);
122 128
123 m_exiting = true; 129 m_exiting = true;
124 if (m_fillThread) m_fillThread->wait(); 130 if (m_fillThread) m_fillThread->wait();
651 SVCERR << "ReadOnlyWaveFileModel(" << objectName() << ")::fill: Waiting for channels..." << endl; 657 SVCERR << "ReadOnlyWaveFileModel(" << objectName() << ")::fill: Waiting for channels..." << endl;
652 #endif 658 #endif
653 sleep(1); 659 sleep(1);
654 channels = m_model.getChannelCount(); 660 channels = m_model.getChannelCount();
655 } 661 }
662 if (m_model.m_exiting) {
663 return;
664 }
656 } 665 }
657 666
658 Range *range = new Range[2 * channels]; 667 Range *range = new Range[2 * channels];
659 float *means = new float[2 * channels]; 668 float *means = new float[2 * channels];
660 int count[2]; 669 int count[2];
732 m_model.m_mutex.unlock(); 741 m_model.m_mutex.unlock();
733 742
734 first = false; 743 first = false;
735 if (m_model.m_exiting) break; 744 if (m_model.m_exiting) break;
736 if (updating) { 745 if (updating) {
737 sleep(1); 746 usleep(100000);
747 if (m_model.m_exiting) break;
738 } 748 }
739 } 749 }
740 750
741 if (!m_model.m_exiting) { 751 if (!m_model.m_exiting) {
742 752