Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mumble-voip/mumble.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBenjamin Jemlich <pcgod@users.sourceforge.net>2010-07-27 14:57:40 +0400
committerBenjamin Jemlich <pcgod@users.sourceforge.net>2010-07-27 14:59:05 +0400
commit8f73beb8e9bd36127cf94e5f61e5c140166a661f (patch)
tree5a33133471dbc5861a59740594ca055295c44e92 /src
parentf5f526d2ee8f3386461798a5943adae59d05243d (diff)
Fix a possible race condition on reconnect
Diffstat (limited to 'src')
-rw-r--r--src/mumble/MainWindow.cpp18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/mumble/MainWindow.cpp b/src/mumble/MainWindow.cpp
index 16ef79857..82b2225a4 100644
--- a/src/mumble/MainWindow.cpp
+++ b/src/mumble/MainWindow.cpp
@@ -517,17 +517,21 @@ void MainWindow::on_qteLog_customContextMenuRequested(const QPoint &mpos) {
}
static void recreateServerHandler() {
- if (g.sh && g.sh->isRunning()) {
+ ServerHandler *sh = g.sh;
+ g.sh = NULL;
+ if (sh && sh->isRunning()) {
g.mw->on_qaServerDisconnect_triggered();
- g.sh->wait();
+ sh->disconnect();
+ sh->wait();
QCoreApplication::instance()->processEvents();
}
- delete g.sh;
- g.sh = new ServerHandler();
- g.sh->moveToThread(g.sh);
- g.mw->connect(g.sh, SIGNAL(connected()), g.mw, SLOT(serverConnected()));
- g.mw->connect(g.sh, SIGNAL(disconnected(QAbstractSocket::SocketError, QString)), g.mw, SLOT(serverDisconnected(QAbstractSocket::SocketError, QString)));
+ delete sh;
+ sh = new ServerHandler();
+ sh->moveToThread(sh);
+ g.sh = sh;
+ g.mw->connect(sh, SIGNAL(connected()), g.mw, SLOT(serverConnected()));
+ g.mw->connect(sh, SIGNAL(disconnected(QAbstractSocket::SocketError, QString)), g.mw, SLOT(serverDisconnected(QAbstractSocket::SocketError, QString)));
}
void MainWindow::openUrl(const QUrl &url) {