]> vaikene.ee Git - evaf/blobdiff - src/libs/Common/app.cpp
Mac OS changes and switched to c++11.
[evaf] / src / libs / Common / app.cpp
index 60ee5bf698d00b809e6050bd2b6f17c9b4f8d76c..f6668d956e997aa656bfbb29eba75a51f0df6ab8 100644 (file)
@@ -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.
  *
 
 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('/');