From 7dd4092436b5eaadce6fb07163cd591115e33d2b Mon Sep 17 00:00:00 2001
From: SeeLook <945374+SeeLook@users.noreply.github.com>
Date: Mon, 13 Nov 2017 11:15:52 +0100
Subject: [PATCH] Initialize sound from C++, after root QML file is loaded,
 connect to it scordature check, single note mode and etc. to improve launch
 time

---
 src/libs/sound/tsound.cpp |  4 ++--
 src/main.cpp              |  1 +
 src/qml/MainScore.qml     | 13 +++++++------
 src/qml/MainWindow.qml    |  1 -
 4 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/src/libs/sound/tsound.cpp b/src/libs/sound/tsound.cpp
index 94c04ab63..4b51589ae 100755
--- a/src/libs/sound/tsound.cpp
+++ b/src/libs/sound/tsound.cpp
@@ -76,7 +76,7 @@ Tsound::~Tsound()
 //#################################################################################################
 
 void Tsound::init() {
-  QTimer::singleShot(1000, [=]{
+  QTimer::singleShot(500, [=]{
 #if !defined (Q_OS_ANDROID) && (defined (Q_OS_LINUX) || defined (Q_OS_WIN))
       TrtAudio::initJACKorASIO(GLOB->A->JACKorASIO);
 #endif
@@ -315,7 +315,7 @@ bool Tsound::listening() const {
 
 
 bool Tsound::playing() const {
-  return player->isPlaying();
+  return player ? player->isPlaying() : false;
 }
 
 
diff --git a/src/main.cpp b/src/main.cpp
index 5f8b0d6e7..78d797f80 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -166,6 +166,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();
     firstTime = false;
     exitCode = a->exec();
     delete e;
diff --git a/src/qml/MainScore.qml b/src/qml/MainScore.qml
index 7643408cb..561859c47 100644
--- a/src/qml/MainScore.qml
+++ b/src/qml/MainScore.qml
@@ -41,8 +41,6 @@ Score {
   scoreObj.nameColor: GLOB.nameColor
   scoreObj.nameStyle: GLOB.noteNameStyle
   scoreObj.enableDoubleAccidentals: GLOB.enableDoubleAccids
-  scoreObj.allowAdding: !GLOB.singleNoteMode
-
 
   Timer { id: zoomTimer; interval: 500 }
   MouseArea {
@@ -83,11 +81,14 @@ Score {
   // private
   property var scordature: null
 
-  Component.onCompleted: {
-    scoreObj.singleNote = GLOB.singleNoteMode
-    updateScord()
+  Connections {
+    target: SOUND
+    onInitialized: {
+      scoreObj.singleNote = GLOB.singleNoteMode
+      scoreObj.allowAdding = Qt.binding(function() { return !GLOB.singleNoteMode })
+      updateScord()
+    }
   }
-
   Connections {
     target: GLOB
     onKeyNameChanged: keyName.text = Qt.binding(keyName.getKeyNameText)
diff --git a/src/qml/MainWindow.qml b/src/qml/MainWindow.qml
index bc019d895..78fbda329 100644
--- a/src/qml/MainWindow.qml
+++ b/src/qml/MainWindow.qml
@@ -88,7 +88,6 @@ ApplicationWindow {
   Component.onCompleted: {
     Noo.mainScore = score
     checkSingleMode()
-    SOUND.init()
   }
 
   function checkSingleMode() {
-- 
GitLab