comparison main/main.cpp @ 591:c06a9e8e2748 with-dependencies

Merge from default branch
author Chris Cannam
date Tue, 23 Jul 2013 16:12:50 +0100
parents 7a6fd7150f2d 09c8195c371d
children c43b3c09da63
comparison
equal deleted inserted replaced
590:7a6fd7150f2d 591:c06a9e8e2748
170 of the window. 170 of the window.
171 171
172 */ 172 */
173 173
174 static QMutex cleanupMutex; 174 static QMutex cleanupMutex;
175 static bool cleanedUp = false;
175 176
176 static void 177 static void
177 signalHandler(int /* signal */) 178 signalHandler(int /* signal */)
178 { 179 {
179 // Avoid this happening more than once across threads 180 // Avoid this happening more than once across threads
180 181
182 std::cerr << "signalHandler: cleaning up and exiting" << std::endl;
181 cleanupMutex.lock(); 183 cleanupMutex.lock();
182 std::cerr << "signalHandler: cleaning up and exiting" << std::endl; 184 if (!cleanedUp) {
183 TempDirectory::getInstance()->cleanup(); 185 TempDirectory::getInstance()->cleanup();
184 exit(0); // without releasing mutex 186 cleanedUp = true;
187 }
188 cleanupMutex.unlock();
189 exit(0);
185 } 190 }
186 191
187 class SVApplication : public QApplication 192 class SVApplication : public QApplication
188 { 193 {
189 public: 194 public:
420 425
421 gui->hide(); 426 gui->hide();
422 427
423 cleanupMutex.lock(); 428 cleanupMutex.lock();
424 429
425 TransformFactory::deleteInstance(); 430 if (!cleanedUp) {
426 TempDirectory::getInstance()->cleanup(); 431 TransformFactory::deleteInstance();
432 TempDirectory::getInstance()->cleanup();
433 cleanedUp = true;
434 }
435
427 application.releaseMainWindow(); 436 application.releaseMainWindow();
428 437
429 #ifdef HAVE_FFTW3F 438 #ifdef HAVE_FFTW3F
430 settings.beginGroup("FFTWisdom"); 439 settings.beginGroup("FFTWisdom");
431 char *cwisdom = fftwf_export_wisdom_to_string(); 440 char *cwisdom = fftwf_export_wisdom_to_string();
442 #endif 451 #endif
443 settings.endGroup(); 452 settings.endGroup();
444 #endif 453 #endif
445 454
446 delete gui; 455 delete gui;
456
457 cleanupMutex.unlock();
447 458
448 cleanupMutex.unlock(); 459 cleanupMutex.unlock();
449 460
450 return rv; 461 return rv;
451 } 462 }