diff options
-rw-r--r-- | src/manager-lib/applicationmanager.cpp | 14 | ||||
-rw-r--r-- | src/manager-lib/nativeruntime.cpp | 4 |
2 files changed, 10 insertions, 8 deletions
diff --git a/src/manager-lib/applicationmanager.cpp b/src/manager-lib/applicationmanager.cpp index 6a991a4f..c64e4761 100644 --- a/src/manager-lib/applicationmanager.cpp +++ b/src/manager-lib/applicationmanager.cpp @@ -673,6 +673,8 @@ bool ApplicationManager::startApplicationInternal(const QString &appId, const QS return false; case Am::NotRunning: + throw Exception("Application %1 is not running, but still has a Runtime object attached") + .arg(app->id()); break; } } @@ -810,12 +812,14 @@ bool ApplicationManager::startApplicationInternal(const QString &appId, const QS qCDebug(LogSystem) << " documentUrl:" << documentUrl; if (inProcess) { - bool ok = runtime->start(); - if (ok) + bool successfullyStarted = runtime->start(); + + if (successfullyStarted) emitActivated(app); else - runtime->deleteLater(); - return ok; + delete runtime; + + return successfullyStarted; } else { // We can only start the app when both the container and the windowmanager are ready. // Using a state-machine would be one option, but then we would need that state-machine @@ -827,7 +831,7 @@ bool ApplicationManager::startApplicationInternal(const QString &appId, const QS if (successfullyStarted) emitActivated(app); else - runtime->deleteLater(); // ~Runtime() will clean app->nonAliased()->m_runtime + delete runtime; // ~Runtime() will clean up app->m_runtime return successfullyStarted; }; diff --git a/src/manager-lib/nativeruntime.cpp b/src/manager-lib/nativeruntime.cpp index 729b409f..c7cbf71e 100644 --- a/src/manager-lib/nativeruntime.cpp +++ b/src/manager-lib/nativeruntime.cpp @@ -143,9 +143,7 @@ bool NativeRuntime::attachApplicationToQuickLauncher(Application *app) ret = startApplicationViaLauncher(); } - if (ret) - setState(Am::Running); - + setState(ret ? Am::Running : Am::NotRunning); return ret; } |