From f76c04b7a6f8bb30230fab67c698b7f3141f2a16 Mon Sep 17 00:00:00 2001
From: orignal <i2porignal@yandex.ru>
Date: Fri, 17 Jun 2016 10:26:51 -0400
Subject: [PATCH] fixed build errors

---
 Daemon.cpp              |   8 --
 Daemon.h                |  10 ---
 i2pd.cpp                |   6 +-
 qt/i2pd_qt/DaemonQT.cpp | 188 ++++++++++++++--------------------------
 qt/i2pd_qt/DaemonQT.h   |   5 +-
 5 files changed, 69 insertions(+), 148 deletions(-)

diff --git a/Daemon.cpp b/Daemon.cpp
index a00d85a2..d34712a3 100644
--- a/Daemon.cpp
+++ b/Daemon.cpp
@@ -265,13 +265,5 @@ namespace i2p
 
 			return true;
 		}
-
-        bool DaemonQT::init(int argc, char* argv[])
-        {
-        #if 0
-            m_Impl = std::make_shared<DaemonQTImpl> (argc, argv);
-        #endif
-            return Daemon_Singleton::init(argc, argv);
-        }
     }
 }
diff --git a/Daemon.h b/Daemon.h
index fd9afeec..6f1d3e88 100644
--- a/Daemon.h
+++ b/Daemon.h
@@ -33,9 +33,6 @@ namespace i2p
 
 #if defined(QT_GUI_LIB) // check if QT
 #define Daemon i2p::util::DaemonQT::Instance()
-#if 0
-    class DaemonQTImpl;
-#endif
     class DaemonQT: public i2p::util::Daemon_Singleton
 	{
 		public:
@@ -47,13 +44,6 @@ namespace i2p
 			}
 
 			bool init(int argc, char* argv[]);
-#if 0
-            void run ();
-
-        private:
-
-			std::shared_ptr<DaemonQTImpl> m_Impl;
-#endif
     };
 
 #elif defined(_WIN32)
diff --git a/i2pd.cpp b/i2pd.cpp
index 2e9d5a19..e6c7abfa 100644
--- a/i2pd.cpp
+++ b/i2pd.cpp
@@ -17,7 +17,7 @@ int main( int argc, char* argv[] )
     //QMessageBox::information(0,"Debug","runGUI completed");
     QApplication app(argc, argv);
     qDebug("Initialising the daemon...");
-    bool daemonInitSuccess = i2p::util::DaemonQt::DaemonQTImpl::init(argc, argv);
+    bool daemonInitSuccess = i2p::qt::DaemonQTImpl::init(argc, argv);
     if(!daemonInitSuccess) {
         QMessageBox::critical(0, "Error", "Daemon init failed");
         return 1;
@@ -28,14 +28,14 @@ int main( int argc, char* argv[] )
     w.show ();
     int result;
     {
-        i2p::util::DaemonQt::Controller daemonQtController;
+        i2p::qt::Controller daemonQtController;
         qDebug("Starting the daemon...");
         emit daemonQtController.startDaemon();
         qDebug("Starting gui event loop...");
         result = app.exec();
         //QMessageBox::information(&w, "Debug", "exec finished");
     }
-    i2p::util::DaemonQt::DaemonQTImpl::deinit();
+    i2p::qt::DaemonQTImpl::deinit();
     //QMessageBox::information(&w, "Debug", "demon stopped");
     //exit(result); //return from main() causes intermittent sigsegv bugs in some Androids. exit() is a workaround for this
     qDebug("Exiting the application");
diff --git a/qt/i2pd_qt/DaemonQT.cpp b/qt/i2pd_qt/DaemonQT.cpp
index 121d547c..6cef8133 100644
--- a/qt/i2pd_qt/DaemonQT.cpp
+++ b/qt/i2pd_qt/DaemonQT.cpp
@@ -7,139 +7,81 @@ namespace i2p
 {
 namespace util
 {
-namespace DaemonQt
-{
-
-void Worker::startDaemon() {
-    qDebug("Performing daemon start...");
-    DaemonQTImpl::start();
-    qDebug("Daemon started.");
-    emit resultReady();
-}
-void Worker::restartDaemon() {
-    qDebug("Performing daemon restart...");
-    DaemonQTImpl::restart();
-    qDebug("Daemon restarted.");
-    emit resultReady();
-}
-void Worker::stopDaemon() {
-    qDebug("Performing daemon stop...");
-    DaemonQTImpl::stop();
-    qDebug("Daemon stopped.");
-    emit resultReady();
-}
-
-Controller::Controller() {
-    Worker *worker = new Worker;
-    worker->moveToThread(&workerThread);
-    connect(&workerThread, &QThread::finished, worker, &QObject::deleteLater);
-    connect(this, &Controller::startDaemon, worker, &Worker::startDaemon);
-    connect(this, &Controller::stopDaemon, worker, &Worker::stopDaemon);
-    connect(this, &Controller::restartDaemon, worker, &Worker::restartDaemon);
-    connect(worker, &Worker::resultReady, this, &Controller::handleResults);
-    workerThread.start();
-}
-Controller::~Controller() {
-    qDebug("Closing and waiting for daemon worker thread...");
-    workerThread.quit();
-    workerThread.wait();
-    qDebug("Waiting for daemon worker thread finished.");
-    if(i2p::util::DaemonQt::DaemonQTImpl::isRunning()) {
-        qDebug("Stopping the daemon...");
-        i2p::util::DaemonQt::DaemonQTImpl::stop();
-        qDebug("Stopped the daemon.");
-    }
-}
-
-
-
-static DaemonQTImpl::runningChangedCallback DaemonQTImpl_runningChanged;
-static bool DaemonQTImpl_running;
-static QMutex* mutex;
-
-bool DaemonQTImpl::init(int argc, char* argv[]){mutex=new QMutex(QMutex::Recursive);setRunningCallback(0);DaemonQTImpl_running=false;return Daemon.init(argc,argv);}
-void DaemonQTImpl::deinit(){delete mutex;}
-void DaemonQTImpl::start(){QMutexLocker locker(mutex);setRunning(true);Daemon.start();}
-void DaemonQTImpl::stop(){QMutexLocker locker(mutex);Daemon.stop();setRunning(false);}
-void DaemonQTImpl::restart(){QMutexLocker locker(mutex);stop();start();}
-
-void DaemonQTImpl::setRunningCallback(runningChangedCallback cb){DaemonQTImpl_runningChanged=cb;}
-bool DaemonQTImpl::isRunning(){return DaemonQTImpl_running;}
-void DaemonQTImpl::setRunning(bool newValue){
-    bool oldValue = DaemonQTImpl_running;
-    if(oldValue!=newValue) {
-        DaemonQTImpl_running = newValue;
-        if(DaemonQTImpl_runningChanged!=0)DaemonQTImpl_runningChanged();
-    }
-}
-
+	 bool DaemonQT::init(int argc, char* argv[])
+     {
+     	return Daemon_Singleton::init(argc, argv);
+     }
 }
 }
-}
-
-#if 0
-#include <memory>
-#include "mainwindow.h"
-#include <QApplication>
-#include <stdlib.h>
-#include "../../Daemon.h"
 
 namespace i2p
 {
-namespace util
+namespace qt
 {
-	class DaemonQTImpl: public std::enable_shared_from_this<DaemonQTImpl>
-	{
-		public:
 
-			DaemonQTImpl (int argc, char* argv[]):
-				m_App (argc, argv)
-			{
-			}
-
-			void Run ()
-			{
-                MainWindow w(m_App);
-				w.show ();
-                m_App.exec();
-			}
-
-		private:
-
-			void StartDaemon ()
-			{
-				Daemon.start ();
-			}
-
-			void StopDaemon ()
-			{
-				Daemon.stop ();
-			}	 
-
-            bool IsRunning () const
-			{
-				return Daemon.running;
-			}
-
-		private:
-
-			QApplication m_App;	
-	};	
-
-	bool DaemonQT::init(int argc, char* argv[])
-	{
-        m_Impl = std::make_shared<DaemonQTImpl> (argc, argv);
-        return Daemon_Singleton::init(argc, argv);
+	void Worker::startDaemon() {
+		qDebug("Performing daemon start...");
+		DaemonQTImpl::start();
+		qDebug("Daemon started.");
+		emit resultReady();
+	}
+	void Worker::restartDaemon() {
+		qDebug("Performing daemon restart...");
+		DaemonQTImpl::restart();
+		qDebug("Daemon restarted.");
+		emit resultReady();
+	}
+	void Worker::stopDaemon() {
+		qDebug("Performing daemon stop...");
+		DaemonQTImpl::stop();
+		qDebug("Daemon stopped.");
+		emit resultReady();
 	}
 
-	void DaemonQT::run ()
-	{
-		if (m_Impl)
-		{
-			m_Impl->Run ();
-			m_Impl = nullptr;
+	Controller::Controller() {
+		Worker *worker = new Worker;
+		worker->moveToThread(&workerThread);
+		connect(&workerThread, &QThread::finished, worker, &QObject::deleteLater);
+		connect(this, &Controller::startDaemon, worker, &Worker::startDaemon);
+		connect(this, &Controller::stopDaemon, worker, &Worker::stopDaemon);
+		connect(this, &Controller::restartDaemon, worker, &Worker::restartDaemon);
+		connect(worker, &Worker::resultReady, this, &Controller::handleResults);
+		workerThread.start();
+	}
+	Controller::~Controller() {
+		qDebug("Closing and waiting for daemon worker thread...");
+		workerThread.quit();
+		workerThread.wait();
+		qDebug("Waiting for daemon worker thread finished.");
+        if(DaemonQTImpl::isRunning()) {
+		    qDebug("Stopping the daemon...");
+            DaemonQTImpl::stop();
+		    qDebug("Stopped the daemon.");
 		}
 	}
+
+
+
+	static DaemonQTImpl::runningChangedCallback DaemonQTImpl_runningChanged;
+	static bool DaemonQTImpl_running;
+	static QMutex* mutex;
+
+	bool DaemonQTImpl::init(int argc, char* argv[]){mutex=new QMutex(QMutex::Recursive);setRunningCallback(0);DaemonQTImpl_running=false;return Daemon.init(argc,argv);}
+	void DaemonQTImpl::deinit(){delete mutex;}
+	void DaemonQTImpl::start(){QMutexLocker locker(mutex);setRunning(true);Daemon.start();}
+	void DaemonQTImpl::stop(){QMutexLocker locker(mutex);Daemon.stop();setRunning(false);}
+	void DaemonQTImpl::restart(){QMutexLocker locker(mutex);stop();start();}
+
+	void DaemonQTImpl::setRunningCallback(runningChangedCallback cb){DaemonQTImpl_runningChanged=cb;}
+	bool DaemonQTImpl::isRunning(){return DaemonQTImpl_running;}
+	void DaemonQTImpl::setRunning(bool newValue){
+		bool oldValue = DaemonQTImpl_running;
+		if(oldValue!=newValue) {
+		    DaemonQTImpl_running = newValue;
+		    if(DaemonQTImpl_runningChanged!=0)DaemonQTImpl_runningChanged();
+		}
+}
+
 }
 }
-#endif
+
diff --git a/qt/i2pd_qt/DaemonQT.h b/qt/i2pd_qt/DaemonQT.h
index 1d57d7e8..d76ed531 100644
--- a/qt/i2pd_qt/DaemonQT.h
+++ b/qt/i2pd_qt/DaemonQT.h
@@ -6,9 +6,7 @@
 
 namespace i2p
 {
-namespace util
-{
-namespace DaemonQt
+namespace qt
 {
     class Worker : public QObject
     {
@@ -61,6 +59,5 @@ namespace DaemonQt
     };
 }
 }
-}
 
 #endif // DAEMONQT_H