From ba06bb184a06a90d8adea6b08fc36f1599daf905 Mon Sep 17 00:00:00 2001 From: Robert Adam Date: Wed, 19 Aug 2020 16:37:17 +0200 Subject: [PATCH] FIX(client): Don't delay ChannelListener processing The processing of ChannelListeners was delayed until the next iteration of the Qt event loop since it was thought that msgServerSync was running in another thread. Given that this function already accesses the DB, this can't be though. Thus the delay is unnecessary and was therefore removed. --- src/mumble/Messages.cpp | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/src/mumble/Messages.cpp b/src/mumble/Messages.cpp index 7ddbd799b..7bee9e7be 100644 --- a/src/mumble/Messages.cpp +++ b/src/mumble/Messages.cpp @@ -186,27 +186,24 @@ void MainWindow::msgServerSync(const MumbleProto::ServerSync &msg) { updateTrayIcon(); // Set-up all ChannelListeners and their volume adjustments as before for this server - // Use the timer to execute the code in the main event loop as we have to access - // the database. - QTimer::singleShot(0, []() { - QList localListeners = g.db->getChannelListeners(g.sh->qbaDigest); + QList localListeners = g.db->getChannelListeners(g.sh->qbaDigest); - if (!localListeners.isEmpty()) { - ChannelListener::setInitialServerSyncDone(false); - g.sh->startListeningToChannels(localListeners); - } else { - // If there are no listeners, then no synchronization is needed in the first place - ChannelListener::setInitialServerSyncDone(true); - } - - QHash volumeMap = g.db->getChannelListenerLocalVolumeAdjustments(g.sh->qbaDigest); + if (!localListeners.isEmpty()) { + ChannelListener::setInitialServerSyncDone(false); + g.sh->startListeningToChannels(localListeners); + } else { + // If there are no listeners, then no synchronization is needed in the first place + ChannelListener::setInitialServerSyncDone(true); + } + + QHash volumeMap = g.db->getChannelListenerLocalVolumeAdjustments(g.sh->qbaDigest); + + QHashIterator it(volumeMap); + while(it.hasNext()) { + it.next(); + ChannelListener::setListenerLocalVolumeAdjustment(it.key(), it.value()); + } - QHashIterator it(volumeMap); - while(it.hasNext()) { - it.next(); - ChannelListener::setListenerLocalVolumeAdjustment(it.key(), it.value()); - } - }); g.sh->setServerSynchronized(true);