X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcore%2Fcoreapplication.cpp;h=0f6bb95ff0eb0a62c8945d924a6af83c94ad4cb5;hb=1ccf9666ade9a46880ffb68feeac81b7c39e570b;hp=e73a09fb09696b2693c1bcd645c564097a484849;hpb=f88bfa81380ceb2c4afce5b15f753570a1ef063d;p=quassel.git diff --git a/src/core/coreapplication.cpp b/src/core/coreapplication.cpp index e73a09fb..0f6bb95f 100644 --- a/src/core/coreapplication.cpp +++ b/src/core/coreapplication.cpp @@ -18,25 +18,16 @@ * 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) { -#ifdef Q_OS_MAC - Quassel::disableCrashHandler(); -#endif /* Q_OS_MAC */ - Quassel::setRunMode(Quassel::CoreOnly); -} - - -CoreApplication::~CoreApplication() -{ - _core.reset(); - Quassel::destroy(); + Quassel::registerQuitHandler([this]() { + connect(_core.get(), SIGNAL(shutdownComplete()), this, SLOT(onShutdownComplete())); + _core->shutdown(); + }); } @@ -49,3 +40,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(); +}