From d426f7d00264a27e704f8206831f240f54c858f4 Mon Sep 17 00:00:00 2001
From: Burak Hancerli <burak.hancerli@qt.io>
Date: Wed, 30 Oct 2024 18:24:31 +0100
Subject: [PATCH] fix: cannot send stop signal properly and settings path may
 not exist

---
 src/backend/backend.cpp  | 11 ++++++++++-
 src/backend/settings.cpp |  8 ++++++++
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/src/backend/backend.cpp b/src/backend/backend.cpp
index cd9ccce..7a33911 100644
--- a/src/backend/backend.cpp
+++ b/src/backend/backend.cpp
@@ -197,11 +197,20 @@ void Backend::runProject(const QString &id, const QByteArray &projectData)
                               Qt::QueuedConnection,
                               Q_ARG(QString, id));
 
+    bool retVal;
     QMetaObject::invokeMethod(m_projectManager.get(),
                               "runProject",
                               Qt::QueuedConnection,
                               Q_ARG(QByteArray, projectData),
-                              Q_ARG(bool, autoScaleProject()));
+                              Q_ARG(bool, autoScaleProject()),
+                              Q_RETURN_ARG(bool, retVal));
+
+    if (!retVal) {
+        QMetaObject::invokeMethod(m_dsManager.get(),
+                                  "sendProjectStopped",
+                                  Qt::QueuedConnection,
+                                  Q_ARG(QString, id));
+    }
     emit popupClose();
 }
 
diff --git a/src/backend/settings.cpp b/src/backend/settings.cpp
index 0ff2f5b..b192fc7 100644
--- a/src/backend/settings.cpp
+++ b/src/backend/settings.cpp
@@ -3,6 +3,7 @@
 
 #include "settings.h"
 
+#include <QDir>
 #include <QFile>
 #include <QJsonDocument>
 #include <QStandardPaths>
@@ -20,6 +21,13 @@ Settings::Settings()
         QStandardPaths::writableLocation(QStandardPaths::ConfigLocation).append("/settings.json"))
 {
     qDebug() << "Settings path:" << m_settingsPath;
+    const QDir dir(QStandardPaths::writableLocation(QStandardPaths::ConfigLocation));
+
+    if (!dir.exists()) {
+        qWarning() << "Settings directory does not exist. Creating one.";
+        dir.mkpath(QStandardPaths::writableLocation(QStandardPaths::ConfigLocation));
+    }
+
     if (!loadSettings()) {
         qDebug() << "Failed to load settings. Applying default ones.";
         applyDefaultSettings();
-- 
GitLab