diff --git a/src/main.cpp b/src/main.cpp
index 3b51d3de19cdec06937b13b6ab5c6805e9ff0e4b..1e59ef86c04610771736a9726b7ff28d1c85b294 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -92,7 +92,7 @@ int main(int argc, char *argv[])
Tglobals *gl = nullptr;
QPointer<QApplication> a = nullptr;
QQmlApplicationEngine *e = nullptr;
- TnootkaQML nooObj;
+ auto nooObj = new TnootkaQML();
int exitCode;
bool firstLoop = true;
@@ -101,11 +101,11 @@ int main(int argc, char *argv[])
#if !defined (Q_OS_ANDROID)
if (a)
delete a;
- if (nooObj.resetConfig()) { // delete config file - new Nootka instance will start with first run wizard
+ if (nooObj->resetConfig()) { // delete config file - new Nootka instance will start with first run wizard
QFile f(confFile);
f.remove();
}
- nooObj.setResetConfig(false);
+ nooObj->setResetConfig(false);
#endif
a = new QApplication(argc, argv);
Tmtr::init(a);
@@ -134,17 +134,17 @@ int main(int argc, char *argv[])
a->setWindowIcon(QIcon(Tpath::img("nootka")));
- Tsound sound;
+ auto sound = new Tsound();
e = new QQmlApplicationEngine;
e->rootContext()->setContextProperty(QStringLiteral("GLOB"), gl);
- e->rootContext()->setContextProperty(QStringLiteral("Noo"), &nooObj);
- e->rootContext()->setContextProperty(QStringLiteral("SOUND"), &sound);
+ e->rootContext()->setContextProperty(QStringLiteral("Noo"), nooObj);
+ e->rootContext()->setContextProperty(QStringLiteral("SOUND"), sound);
bool wasFirstRun = gl->isFirstRun;
if (gl->isFirstRun) {
TmainHelp h;
e->rootContext()->setContextProperty(QStringLiteral("HELP"), &h);
- nooObj.setQmlEngine(e);
+ nooObj->setQmlEngine(e);
e->load(QUrl(QStringLiteral("qrc:/wizard/Wizard.qml")));
if (firstLoop) {
QTextStream o(stdout);
@@ -154,14 +154,14 @@ int main(int argc, char *argv[])
delete e;
e = new QQmlApplicationEngine;
e->rootContext()->setContextProperty(QStringLiteral("GLOB"), gl);
- e->rootContext()->setContextProperty(QStringLiteral("Noo"), &nooObj);
- e->rootContext()->setContextProperty(QStringLiteral("SOUND"), &sound);
+ e->rootContext()->setContextProperty(QStringLiteral("Noo"), nooObj);
+ e->rootContext()->setContextProperty(QStringLiteral("SOUND"), sound);
gl->isFirstRun = false;
gl->config->setValue(QLatin1String("version"), gl->version);
// TODO: storing current version in settings avoids opening 'about' window next launch
// but if there will be another window - delete line above
}
- nooObj.setQmlEngine(e);
+ nooObj->setQmlEngine(e);
qmlRegisterType<TnameItem>("Nootka.Main", 1, 0, "TnameItem");
qmlRegisterType<TmainScoreObject>("Nootka.Main", 1, 0, "TmainScoreObject");
qmlRegisterType<TdialogLoaderObject>("Nootka.Dialogs", 1, 0, "TdialogObject");
@@ -171,10 +171,10 @@ int main(int argc, char *argv[])
#if defined (Q_OS_ANDROID)
QString androidArg = Tandroid::getRunArgument();
if (!androidArg.isEmpty())
- nooObj.openFile(androidArg);
+ nooObj->openFile(androidArg);
#else
if (argc > 1)
- nooObj.openFile(QString::fromLocal8Bit(argv[argc - 1]));
+ nooObj->openFile(QString::fromLocal8Bit(argv[argc - 1]));
#endif
}
if (firstLoop && !wasFirstRun) {
@@ -185,7 +185,7 @@ int main(int argc, char *argv[])
o << "\033[01;35m Nootka launch time: " << startElapsed.nsecsElapsed() / 1000000.0 << " [ms]\033[01;00m\n";
#endif
}
- sound.init();
+ sound->init();
if (firstLoop && !wasFirstRun) {
// show some dialog when version was changed (news or other info)
@@ -198,18 +198,23 @@ int main(int argc, char *argv[])
firstLoop = false;
exitCode = a->exec();
+
+ delete sound;
delete e;
delete gl;
#if defined (Q_OS_ANDROID)
- if (nooObj.resetConfig()) { // delete config file - new Nootka instance will start with first run wizard
+ if (nooObj->resetConfig()) { // delete config file - new Nootka instance will start with first run wizard
QFile f(confFile);
f.remove();
Tandroid::restartNootka(); // and call Nootka after delay
}
- nooObj.setResetConfig(false); // do - while loop doesn't work with Android
+ nooObj->setResetConfig(false); // do - while loop doesn't work with Android
qApp->quit(); // HACK: calling QApplication::quick() solves hang on x86 when Qt uses native (usually obsolete) SSL libraries
#endif
- } while (nooObj.resetConfig());
+ } while (nooObj->resetConfig());
+
+ delete nooObj;
+ qInstallMessageHandler(0);
delete a;
return exitCode;