changeset 283:d27c322b5d6e

* Avoid crash when "hiding" non-visible splash (I don't quite understand this one, but hey)
author Chris Cannam
date Thu, 13 Nov 2008 18:17:33 +0000 (2008-11-13)
parents 64a8ee011004
children f60d7ef9bd7a
files main/MainWindow.cpp main/main.cpp
diffstat 2 files changed, 12 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/main/MainWindow.cpp	Thu Nov 13 14:23:23 2008 +0000
+++ b/main/MainWindow.cpp	Thu Nov 13 18:17:33 2008 +0000
@@ -271,7 +271,7 @@
 
     newSession();
     
-//!!!    TransformFactory::getInstance()->startPopulationThread();
+    TransformFactory::getInstance()->startPopulationThread();
 }
 
 MainWindow::~MainWindow()
--- a/main/main.cpp	Thu Nov 13 14:23:23 2008 +0000
+++ b/main/main.cpp	Thu Nov 13 18:17:33 2008 +0000
@@ -21,7 +21,6 @@
 #include "base/PropertyContainer.h"
 #include "base/Preferences.h"
 #include "widgets/TipDialog.h"
-#include "rdf/SimpleSPARQLQuery.h"
 
 #include <QMetaType>
 #include <QApplication>
@@ -237,14 +236,15 @@
     QApplication::setApplicationName(QApplication::tr("Sonic Visualiser"));
 
     QPixmap pixmap(":/icons/sv-splash.png");
-    QSplashScreen splash(pixmap);
+    QSplashScreen *splash = 0;
 
     QSettings settings;
 
     settings.beginGroup("Preferences");
     if (settings.value("show-splash", true).toBool()) {
-        splash.show();
-        QTimer::singleShot(5000, &splash, SLOT(hide()));
+        splash = new QSplashScreen(pixmap);
+        splash->show();
+        QTimer::singleShot(5000, splash, SLOT(hide()));
         application.processEvents();
     }
     settings.endGroup();
@@ -257,10 +257,6 @@
     }
     settings.endGroup();
 
-    SimpleSPARQLQuery::setImplementationPreference
-        (SimpleSPARQLQuery::UseDatastore);
-//        (SimpleSPARQLQuery::UseDirectParser);
-
     QIcon icon;
     int sizes[] = { 16, 22, 24, 32, 48, 64, 128 };
     for (int i = 0; i < sizeof(sizes)/sizeof(sizes[0]); ++i) {
@@ -303,7 +299,9 @@
 
     MainWindow *gui = new MainWindow(audioOutput, oscSupport);
     application.setMainWindow(gui);
-    QObject::connect(gui, SIGNAL(hideSplash()), &splash, SLOT(hide()));
+    if (splash) {
+        QObject::connect(gui, SIGNAL(hideSplash()), splash, SLOT(hide()));
+    }
 
     QDesktopWidget *desktop = QApplication::desktop();
     QRect available = desktop->availableGeometry();
@@ -371,12 +369,12 @@
             }
         }
         if (status == MainWindow::FileOpenFailed) {
-            splash.hide();
+            if (splash) splash->hide();
 	    QMessageBox::critical
                 (gui, QMessageBox::tr("Failed to open file"),
                  QMessageBox::tr("File or URL \"%1\" could not be opened").arg(path));
         } else if (status == MainWindow::FileOpenWrongMode) {
-            splash.hide();
+            if (splash) splash->hide();
             QMessageBox::critical
                 (gui, QMessageBox::tr("Failed to open file"),
                  QMessageBox::tr("<b>Audio required</b><p>Please load at least one audio file before importing annotation data"));
@@ -398,7 +396,8 @@
     settings.endGroup();
 #endif
 
-    splash.finish(gui);
+    if (splash) splash->finish(gui);
+    delete splash;
 
 /*
     TipDialog tipDialog;