Mercurial > hg > svcore
comparison data/model/Dense3DModelPeakCache.cpp @ 1527:710e6250a401 zoom
Merge from default branch
author | Chris Cannam |
---|---|
date | Mon, 17 Sep 2018 13:51:14 +0100 |
parents | 48e9f538e6e9 |
children | 70e172e6cc59 |
comparison
equal
deleted
inserted
replaced
1324:d4a28d1479a8 | 1527:710e6250a401 |
---|---|
15 | 15 |
16 #include "Dense3DModelPeakCache.h" | 16 #include "Dense3DModelPeakCache.h" |
17 | 17 |
18 #include "base/Profiler.h" | 18 #include "base/Profiler.h" |
19 | 19 |
20 #include "base/HitCount.h" | |
21 | |
20 Dense3DModelPeakCache::Dense3DModelPeakCache(const DenseThreeDimensionalModel *source, | 22 Dense3DModelPeakCache::Dense3DModelPeakCache(const DenseThreeDimensionalModel *source, |
21 int columnsPerPeak) : | 23 int columnsPerPeak) : |
22 m_source(source), | 24 m_source(source), |
23 m_columnsPerPeak(columnsPerPeak) | 25 m_columnsPerPeak(columnsPerPeak) |
24 { | 26 { |
25 m_cache = new EditableDenseThreeDimensionalModel | 27 m_cache = new EditableDenseThreeDimensionalModel |
26 (source->getSampleRate(), | 28 (source->getSampleRate(), |
31 | 33 |
32 connect(source, SIGNAL(modelChanged()), | 34 connect(source, SIGNAL(modelChanged()), |
33 this, SLOT(sourceModelChanged())); | 35 this, SLOT(sourceModelChanged())); |
34 connect(source, SIGNAL(aboutToBeDeleted()), | 36 connect(source, SIGNAL(aboutToBeDeleted()), |
35 this, SLOT(sourceModelAboutToBeDeleted())); | 37 this, SLOT(sourceModelAboutToBeDeleted())); |
36 | |
37 } | 38 } |
38 | 39 |
39 Dense3DModelPeakCache::~Dense3DModelPeakCache() | 40 Dense3DModelPeakCache::~Dense3DModelPeakCache() |
40 { | 41 { |
42 if (m_cache) m_cache->aboutToDelete(); | |
41 delete m_cache; | 43 delete m_cache; |
42 } | 44 } |
43 | 45 |
44 Dense3DModelPeakCache::Column | 46 Dense3DModelPeakCache::Column |
45 Dense3DModelPeakCache::getColumn(int column) const | 47 Dense3DModelPeakCache::getColumn(int column) const |
46 { | 48 { |
47 Profiler profiler("Dense3DModelPeakCache::getColumn"); | |
48 if (!m_source) return Column(); | 49 if (!m_source) return Column(); |
49 if (!haveColumn(column)) fillColumn(column); | 50 if (!haveColumn(column)) fillColumn(column); |
50 return m_cache->getColumn(column); | 51 return m_cache->getColumn(column); |
51 } | 52 } |
52 | 53 |
77 } | 78 } |
78 | 79 |
79 bool | 80 bool |
80 Dense3DModelPeakCache::haveColumn(int column) const | 81 Dense3DModelPeakCache::haveColumn(int column) const |
81 { | 82 { |
82 return in_range_for(m_coverage, column) && m_coverage[column]; | 83 static HitCount count("Dense3DModelPeakCache"); |
84 if (in_range_for(m_coverage, column) && m_coverage[column]) { | |
85 count.hit(); | |
86 return true; | |
87 } else { | |
88 count.miss(); | |
89 return false; | |
90 } | |
83 } | 91 } |
84 | 92 |
85 void | 93 void |
86 Dense3DModelPeakCache::fillColumn(int column) const | 94 Dense3DModelPeakCache::fillColumn(int column) const |
87 { | 95 { |