summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/manager-lib/applicationmanager.cpp14
-rw-r--r--src/manager-lib/nativeruntime.cpp4
2 files changed, 10 insertions, 8 deletions
diff --git a/src/manager-lib/applicationmanager.cpp b/src/manager-lib/applicationmanager.cpp
index 5305ebef..9b27c8e1 100644
--- a/src/manager-lib/applicationmanager.cpp
+++ b/src/manager-lib/applicationmanager.cpp
@@ -685,6 +685,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;
}
}
@@ -806,12 +808,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
@@ -823,7 +827,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 31d842a2..e8b9d635 100644
--- a/src/manager-lib/nativeruntime.cpp
+++ b/src/manager-lib/nativeruntime.cpp
@@ -167,9 +167,7 @@ bool NativeRuntime::attachApplicationToQuickLauncher(Application *app)
ret = startApplicationViaLauncher();
}
- if (ret)
- setState(Am::Running);
-
+ setState(ret ? Am::Running : Am::NotRunning);
return ret;
}