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