Mercurial > hg > svcore
comparison data/fft/FFTDataServer.h @ 215:a051929fef3b
* Attempt to improve management of FFT models that are not currently in use.
I think these are some problems with this at the moment.
author | Chris Cannam |
---|---|
date | Fri, 19 Jan 2007 14:38:57 +0000 |
parents | 91fdc752e540 |
children | 7f8ffe65d453 |
comparison
equal
deleted
inserted
replaced
214:ce6f65ab3327 | 215:a051929fef3b |
---|---|
27 | 27 |
28 #include <vector> | 28 #include <vector> |
29 #include <deque> | 29 #include <deque> |
30 | 30 |
31 class DenseTimeValueModel; | 31 class DenseTimeValueModel; |
32 class Model; | |
32 class FFTCache; | 33 class FFTCache; |
33 | 34 |
34 class FFTDataServer | 35 class FFTDataServer |
35 { | 36 { |
36 public: | 37 public: |
53 size_t fillFromColumn = 0); | 54 size_t fillFromColumn = 0); |
54 | 55 |
55 static void claimInstance(FFTDataServer *); | 56 static void claimInstance(FFTDataServer *); |
56 static void releaseInstance(FFTDataServer *); | 57 static void releaseInstance(FFTDataServer *); |
57 | 58 |
59 static void modelAboutToBeDeleted(Model *); | |
60 | |
58 const DenseTimeValueModel *getModel() const { return m_model; } | 61 const DenseTimeValueModel *getModel() const { return m_model; } |
59 int getChannel() const { return m_channel; } | 62 int getChannel() const { return m_channel; } |
60 WindowType getWindowType() const { return m_windower.getType(); } | 63 WindowType getWindowType() const { return m_windower.getType(); } |
61 size_t getWindowSize() const { return m_windowSize; } | 64 size_t getWindowSize() const { return m_windowSize; } |
62 size_t getWindowIncrement() const { return m_windowIncrement; } | 65 size_t getWindowIncrement() const { return m_windowIncrement; } |
194 size_t fftSize, | 197 size_t fftSize, |
195 bool polar); | 198 bool polar); |
196 | 199 |
197 typedef std::pair<FFTDataServer *, int> ServerCountPair; | 200 typedef std::pair<FFTDataServer *, int> ServerCountPair; |
198 typedef std::map<QString, ServerCountPair> ServerMap; | 201 typedef std::map<QString, ServerCountPair> ServerMap; |
202 typedef std::deque<FFTDataServer *> ServerQueue; | |
199 | 203 |
200 static ServerMap m_servers; | 204 static ServerMap m_servers; |
205 static ServerQueue m_releasedServers; // these are still in m_servers as well, with zero refcount | |
201 static QMutex m_serverMapMutex; | 206 static QMutex m_serverMapMutex; |
202 static FFTDataServer *findServer(QString); // call with serverMapMutex held | 207 static FFTDataServer *findServer(QString); // call with serverMapMutex held |
203 static void purgeLimbo(int maxSize = 3); // call with serverMapMutex held | 208 static void purgeLimbo(int maxSize = 3); // call with serverMapMutex held |
204 }; | 209 }; |
205 | 210 |