Mercurial > hg > svcore
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 |