X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fcoreapplication.cpp;h=9ad6ef093b24fc4eb8c06604798fad20a1875559;hp=90f39055f2c7b51b9c462c52216629cc17621efe;hb=ddfb1d2574c4bffd180361a80df9b1cd584bb040;hpb=72473527f99cbe68dcfcb4ca17f828bd3775bba7 diff --git a/src/core/coreapplication.cpp b/src/core/coreapplication.cpp index 90f39055..9ad6ef09 100644 --- a/src/core/coreapplication.cpp +++ b/src/core/coreapplication.cpp @@ -18,10 +18,8 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#include "core.h" #include "coreapplication.h" - CoreApplication::CoreApplication(int &argc, char **argv) : QCoreApplication(argc, argv) { @@ -30,12 +28,10 @@ CoreApplication::CoreApplication(int &argc, char **argv) #endif /* Q_OS_MAC */ Quassel::setRunMode(Quassel::CoreOnly); -} - - -CoreApplication::~CoreApplication() -{ - _core.reset(); + Quassel::registerQuitHandler([this]() { + connect(_core.get(), SIGNAL(shutdownComplete()), this, SLOT(onShutdownComplete())); + _core->shutdown(); + }); } @@ -48,3 +44,10 @@ void CoreApplication::init() _core.reset(new Core{}); // FIXME C++14: std::make_unique _core->init(); } + + +void CoreApplication::onShutdownComplete() +{ + connect(_core.get(), SIGNAL(destroyed()), QCoreApplication::instance(), SLOT(quit())); + _core.release()->deleteLater(); +}