diff --git a/Patronum/src/PController.cpp b/Patronum/src/PController.cpp index 7afd865..a8493c7 100644 --- a/Patronum/src/PController.cpp +++ b/Patronum/src/PController.cpp @@ -98,6 +98,8 @@ bool Controller::sendStop() { return false; } + _disableFinished = true; + return d_ptr->stop(); } @@ -155,7 +157,8 @@ void Controller::handleResponce(const QVariantMap &responce) { } void Controller::finished() { - QCoreApplication::exit(0); + if (!_disableFinished) + QCoreApplication::exit(0); } QList<Feature> Controller::features() { diff --git a/Patronum/src/PController.h b/Patronum/src/PController.h index 9db8acd..50fbd14 100644 --- a/Patronum/src/PController.h +++ b/Patronum/src/PController.h @@ -130,7 +130,7 @@ protected: private: ControllerPrivate *d_ptr = nullptr; - + bool _disableFinished = false; void printDefaultHelp() const; }; } diff --git a/Patronum/src/PServiceBase.cpp b/Patronum/src/PServiceBase.cpp index 52330c4..2fbb842 100644 --- a/Patronum/src/PServiceBase.cpp +++ b/Patronum/src/PServiceBase.cpp @@ -179,10 +179,6 @@ int ServiceBase::exec() { if (fStart || fDaemon) { if (fDaemon) { - if (controller()->sendStop()) { - std::this_thread::sleep_for (std::chrono::milliseconds(500)); - } - if (!d_ptr->startDeamon()) return Patronum::PatronumError::UnsupportedPlatform; return 0; @@ -190,7 +186,7 @@ int ServiceBase::exec() { QTimer::singleShot(0, nullptr, [this]() { if (controller()->sendStop()) { - std::this_thread::sleep_for (std::chrono::milliseconds(500)); + std::this_thread::sleep_for (std::chrono::milliseconds(1000)); } if (!d_ptr->start()) {