X-Git-Url: https://vaikene.ee/gitweb/pswgen09.html?a=blobdiff_plain;f=src%2Flibs%2FCommon%2Fapp.cpp;h=b907a4b4ebe05c7749d026a4e52fd9d9a598cb14;hb=13dedf19c628b9967e4c4106ab0fd967f1df0b90;hp=60ee5bf698d00b809e6050bd2b6f17c9b4f8d76c;hpb=8958311b9f05fc65cdf9e528db8b4b32a94eb24a;p=evaf diff --git a/src/libs/Common/app.cpp b/src/libs/Common/app.cpp index 60ee5bf..b907a4b 100644 --- a/src/libs/Common/app.cpp +++ b/src/libs/Common/app.cpp @@ -3,7 +3,7 @@ * @brief Application interface implementation * @author Enar Vaikene * - * Copyright (c) 2011 Enar Vaikene + * Copyright (c) 2011-2019 Enar Vaikene * * This file is part of the eVaf C++ cross-platform application development framework. * @@ -31,10 +31,18 @@ using namespace eVaf::Common; +namespace +{ + static Internal::App * singleton = nullptr; +} + iApp * iApp::instance() { - static Internal::App singleton; - return &singleton; + if (nullptr == singleton) + { + singleton = new Internal::App; + } + return singleton; } char const * const iApp::EV_QUIT = "iApp::quit"; @@ -47,6 +55,15 @@ char const * const iApp::EV_TERMINATING = "iApp::terminating"; using namespace eVaf::Common::Internal; +void App::destroyInstance() +{ + if (nullptr != singleton) + { + delete singleton; + singleton = nullptr; + } +} + App::App() : iApp() , mReady(false) @@ -57,11 +74,12 @@ App::App() , mEvTerminating(0) { setObjectName(QString("%1.iApp").arg(VER_MODULE_NAME_STR)); - + EVAF_INFO("%s-App created", VER_MODULE_NAME_STR); } App::~App() { + EVAF_INFO("%s-App destroyed", VER_MODULE_NAME_STR); } bool App::init() @@ -206,7 +224,7 @@ bool App::event(QEvent * e) QString const App::dataRootDir() const { if (mDataRootDir.isEmpty()) { -#ifdef Q_OS_LINUX +#if defined(Q_OS_LINUX) || defined(Q_OS_MACOS) QString dataLoc = QDir::homePath(); if (!dataLoc.endsWith('/')) dataLoc.append('/'); @@ -277,7 +295,7 @@ QString const App::xmlFileName() const int App::exec() { setReady(true); - int rval = QCoreApplication::exec(); + int const rval = QCoreApplication::exec(); setReady(false); return rval; }