Fixes #410 - away log (you'll find it in the views menu)
[quassel.git] / src / core / sessionthread.cpp
index 35caf13..c29d1ff 100644 (file)
@@ -36,9 +36,12 @@ SessionThread::SessionThread(UserId uid, bool restoreState, QObject *parent)
 }
 
 SessionThread::~SessionThread() {
-  // shut down thread gracefully
-  quit();
-  wait();
+  if(_session) {
+    _session->setParent(0);
+    _session->moveToThread(thread());
+    _session->deleteLater();
+    _session = 0;
+  }
 }
 
 CoreSession *SessionThread::session() {
@@ -103,5 +106,13 @@ void SessionThread::run() {
   emit initialized();
   exec();
   delete _session;
+  _session = 0;
 }
 
+void SessionThread::stopSession() {
+  if(_session) {
+    connect(_session, SIGNAL(destroyed()), this, SLOT(quit()));
+    _session->deleteLater();
+    _session = 0;
+  }
+}