Mercurial > hg > svapp
comparison framework/MainWindowBase.cpp @ 113:0c1ea5ff6518
* Speed up spectrogram painting by releasing mutex in FFTDataServer
while calculating data prior to writing it, and by adding whole-column
value query methods to FFT objects
* Add paint cache to Thumbwheel -- repaints of this widget were slowing
down the whole spectrogram repaint
* More uses of MutexLocker (named and with debug) and more profile
points
* Make startup much quicker some of the time, with OSC server in place
author | Chris Cannam |
---|---|
date | Thu, 08 May 2008 14:46:22 +0000 |
parents | 2dd30a7cd21a |
children | 087662afe778 |
comparison
equal
deleted
inserted
replaced
112:e54dff673096 | 113:0c1ea5ff6518 |
---|---|
104 m_viewManager(0), | 104 m_viewManager(0), |
105 m_timeRulerLayer(0), | 105 m_timeRulerLayer(0), |
106 m_audioOutput(withAudioOutput), | 106 m_audioOutput(withAudioOutput), |
107 m_playSource(0), | 107 m_playSource(0), |
108 m_playTarget(0), | 108 m_playTarget(0), |
109 m_oscQueue(withOSCSupport ? new OSCQueue() : 0), | 109 m_oscQueue(0), |
110 m_oscQueueStarter(0), | |
110 m_recentFiles("RecentFiles", 20), | 111 m_recentFiles("RecentFiles", 20), |
111 m_recentTransforms("RecentTransforms", 20), | 112 m_recentTransforms("RecentTransforms", 20), |
112 m_documentModified(false), | 113 m_documentModified(false), |
113 m_openingAudioFile(false), | 114 m_openingAudioFile(false), |
114 m_abandoning(false), | 115 m_abandoning(false), |
115 m_labeller(0) | 116 m_labeller(0) |
116 { | 117 { |
118 Profiler profiler("MainWindowBase::MainWindowBase"); | |
119 | |
117 connect(CommandHistory::getInstance(), SIGNAL(commandExecuted()), | 120 connect(CommandHistory::getInstance(), SIGNAL(commandExecuted()), |
118 this, SLOT(documentModified())); | 121 this, SLOT(documentModified())); |
119 connect(CommandHistory::getInstance(), SIGNAL(documentRestored()), | 122 connect(CommandHistory::getInstance(), SIGNAL(documentRestored()), |
120 this, SLOT(documentRestored())); | 123 this, SLOT(documentRestored())); |
121 | 124 |
190 connect(Preferences::getInstance(), | 193 connect(Preferences::getInstance(), |
191 SIGNAL(propertyChanged(PropertyContainer::PropertyName)), | 194 SIGNAL(propertyChanged(PropertyContainer::PropertyName)), |
192 this, | 195 this, |
193 SLOT(preferenceChanged(PropertyContainer::PropertyName))); | 196 SLOT(preferenceChanged(PropertyContainer::PropertyName))); |
194 | 197 |
195 if (m_oscQueue && m_oscQueue->isOK()) { | |
196 connect(m_oscQueue, SIGNAL(messagesAvailable()), this, SLOT(pollOSC())); | |
197 QTimer *oscTimer = new QTimer(this); | |
198 connect(oscTimer, SIGNAL(timeout()), this, SLOT(pollOSC())); | |
199 oscTimer->start(1000); | |
200 } | |
201 | |
202 Labeller::ValueType labellerType = Labeller::ValueFromTwoLevelCounter; | 198 Labeller::ValueType labellerType = Labeller::ValueFromTwoLevelCounter; |
203 settings.beginGroup("MainWindow"); | 199 settings.beginGroup("MainWindow"); |
204 labellerType = (Labeller::ValueType) | 200 labellerType = (Labeller::ValueType) |
205 settings.value("labellertype", (int)labellerType).toInt(); | 201 settings.value("labellertype", (int)labellerType).toInt(); |
206 int cycle = settings.value("labellercycle", 4).toInt(); | 202 int cycle = settings.value("labellercycle", 4).toInt(); |
207 settings.endGroup(); | 203 settings.endGroup(); |
208 | 204 |
209 m_labeller = new Labeller(labellerType); | 205 m_labeller = new Labeller(labellerType); |
210 m_labeller->setCounterCycleSize(cycle); | 206 m_labeller->setCounterCycleSize(cycle); |
207 | |
208 if (withOSCSupport) { | |
209 m_oscQueueStarter = new OSCQueueStarter(this); | |
210 connect(m_oscQueueStarter, SIGNAL(finished()), this, SLOT(oscReady())); | |
211 m_oscQueueStarter->start(); | |
212 } | |
211 } | 213 } |
212 | 214 |
213 MainWindowBase::~MainWindowBase() | 215 MainWindowBase::~MainWindowBase() |
214 { | 216 { |
215 if (m_playTarget) m_playTarget->shutdown(); | 217 if (m_playTarget) m_playTarget->shutdown(); |
216 // delete m_playTarget; | 218 // delete m_playTarget; |
217 delete m_playSource; | 219 delete m_playSource; |
218 delete m_viewManager; | 220 delete m_viewManager; |
219 delete m_oscQueue; | 221 delete m_oscQueue; |
220 Profiles::getInstance()->dump(); | 222 Profiles::getInstance()->dump(); |
223 } | |
224 | |
225 void | |
226 MainWindowBase::oscReady() | |
227 { | |
228 if (m_oscQueue && m_oscQueue->isOK()) { | |
229 connect(m_oscQueue, SIGNAL(messagesAvailable()), this, SLOT(pollOSC())); | |
230 QTimer *oscTimer = new QTimer(this); | |
231 connect(oscTimer, SIGNAL(timeout()), this, SLOT(pollOSC())); | |
232 oscTimer->start(1000); | |
233 std::cerr << "Finished setting up OSC interface" << std::endl; | |
234 } | |
221 } | 235 } |
222 | 236 |
223 QString | 237 QString |
224 MainWindowBase::getOpenFileName(FileFinder::FileType type) | 238 MainWindowBase::getOpenFileName(FileFinder::FileType type) |
225 { | 239 { |