From 6fc39f0c41c248be00c5673ae80d03d115bf3739 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Thu, 21 Aug 2014 17:25:27 +0200 Subject: [PATCH] Locator: Fix deadlock Updating the completion list is done in a separate thread, and for the all and current project filters that requires a slot to be synchronously executed on the main thread. Triggering the update first canceled a running update and waited for it to finish, before starting the next update. If the first update hadn't run its code on the main thread yet, it was never be able to, and never finished. The patch just removes the waitForFinished after the cancel. There is no reason to wait, since we retrieve all results only when we get the finished signal of a non-canceled update anyhow. Broke with 05c267673f43ecbb0ae4c44adc7d02a690435f8b when fixing QTCREATORBUG-12592 Task-number: QTCREATORBUG-12875 Change-Id: Iba9d46d469e6b2c7e894963d964c2eaca4bc4d93 Reviewed-by: Christian Kandeler --- src/plugins/coreplugin/locator/locatorwidget.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/plugins/coreplugin/locator/locatorwidget.cpp b/src/plugins/coreplugin/locator/locatorwidget.cpp index 93d02df0153..07e80e557f9 100644 --- a/src/plugins/coreplugin/locator/locatorwidget.cpp +++ b/src/plugins/coreplugin/locator/locatorwidget.cpp @@ -483,7 +483,6 @@ void LocatorWidget::updateCompletionList(const QString &text) // cancel the old future m_entriesWatcher->future().cancel(); - m_entriesWatcher->future().waitForFinished(); QFuture future = QtConcurrent::run(runSearch, filters, searchText); m_entriesWatcher->setFuture(future);