From 63ad972576d4dbf4569cb20d2f6f7d86ad4c2b78 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Mon, 24 Aug 2015 11:09:41 -0700 Subject: [PATCH] Write and delete "application is running" marker file --- interface/src/Application.cpp | 4 ++++ interface/src/CrashHandler.cpp | 42 ++++++++++++++++++++++++++++++++++ interface/src/CrashHandler.h | 27 ++++++++++++++++++++++ 3 files changed, 73 insertions(+) create mode 100644 interface/src/CrashHandler.cpp create mode 100644 interface/src/CrashHandler.h diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 6bb12d4d06..8b59fd16d4 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -104,6 +104,7 @@ #include #include "AudioClient.h" +#include "CrashHandler.h" #include "DiscoverabilityManager.h" #include "GLCanvas.h" #include "LODManager.h" @@ -256,6 +257,9 @@ bool setupEssentials(int& argc, char** argv) { // Set build version QCoreApplication::setApplicationVersion(BUILD_VERSION); + CrashHandler::writeRunningMarkerFiler(); + qAddPostRoutine(CrashHandler::deleteRunningMarkerFile); + DependencyManager::registerInheritance(); DependencyManager::registerInheritance(); DependencyManager::registerInheritance(); diff --git a/interface/src/CrashHandler.cpp b/interface/src/CrashHandler.cpp new file mode 100644 index 0000000000..c95e513898 --- /dev/null +++ b/interface/src/CrashHandler.cpp @@ -0,0 +1,42 @@ +// +// CrashHandler.cpp +// interface/src +// +// Created by David Rowe on 24 Aug 2015. +// Copyright 2015 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include "CrashHandler.h" + +#include +#include +#include +#include +#include + +static const QString RUNNING_MARKER_FILENAME = "Interface.running"; + +void CrashHandler::writeRunningMarkerFiler() { + QFile runningMarkerFile(runningMarkerFilePath()); + if (!runningMarkerFile.exists()) { + runningMarkerFile.open(QIODevice::WriteOnly); + runningMarkerFile.close(); + } +} +void CrashHandler::deleteRunningMarkerFile() { + QFile runningMarkerFile(runningMarkerFilePath()); + if (runningMarkerFile.exists()) { + runningMarkerFile.remove(); + } +} + +const QString CrashHandler::runningMarkerFilePath() { + QSettings::setDefaultFormat(QSettings::IniFormat); + QSettings applicationInfo(PathUtils::resourcesPath() + "info/ApplicationInfo.ini", QSettings::IniFormat); + applicationInfo.beginGroup("INFO"); + QCoreApplication::setOrganizationName(applicationInfo.value("organizationName").toString()); + return QStandardPaths::writableLocation(QStandardPaths::DataLocation) + "/" + RUNNING_MARKER_FILENAME; +} diff --git a/interface/src/CrashHandler.h b/interface/src/CrashHandler.h new file mode 100644 index 0000000000..d354c49d07 --- /dev/null +++ b/interface/src/CrashHandler.h @@ -0,0 +1,27 @@ +// +// CrashHandler.h +// interface/src +// +// Created by David Rowe on 24 Aug 2015. +// Copyright 2015 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef hifi_CrashHandler_h +#define hifi_CrashHandler_h + +#include + +class CrashHandler { + +public: + static void writeRunningMarkerFiler(); + static void deleteRunningMarkerFile(); + +private: + static const QString runningMarkerFilePath(); +}; + +#endif // hifi_CrashHandler_h