X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fsessionthread.cpp;h=c29d1ff78b588e0c7154253f80b9382ca3090ec5;hp=35caf13be27eef07c065e252a16b97219d5e8421;hb=453ccab6ade4a21c7aa3c331af893c91468250a4;hpb=f029b6f8d31be1c0d4d7a2b74989bcb61e4d511b diff --git a/src/core/sessionthread.cpp b/src/core/sessionthread.cpp index 35caf13b..c29d1ff7 100644 --- a/src/core/sessionthread.cpp +++ b/src/core/sessionthread.cpp @@ -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; + } +}