* 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)
{
#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();
+ });
}
_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();
+}