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 {