From ae85170b663ad0f256b9cde53ac5ec7f61a1b302 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Tue, 30 Mar 2021 11:14:04 +0200 Subject: [PATCH] LanguageClient: untrack request on cancel Now we search for the key twice in the hash, but the hash shouldn't get to big and the lookup doesn't happen very often. Change-Id: I4751a8203321bb4c1ea5092b89593971d736e034 Reviewed-by: Christian Stenger --- src/plugins/languageclient/client.cpp | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/plugins/languageclient/client.cpp b/src/plugins/languageclient/client.cpp index 54e54cb3cfe..ece007c27d7 100644 --- a/src/plugins/languageclient/client.cpp +++ b/src/plugins/languageclient/client.cpp @@ -450,16 +450,14 @@ void Client::requestDocumentHighlights(TextEditor::TextEditorWidget *widget) return; } - auto runningRequest = m_highlightRequests.find(widget); - if (runningRequest != m_highlightRequests.end()) - cancelRequest(runningRequest.value()); + if (m_highlightRequests.contains(widget)) + cancelRequest(m_highlightRequests.take(widget)); DocumentHighlightsRequest request( TextDocumentPositionParams(TextDocumentIdentifier(uri), Position(widget->textCursor()))); auto connection = connect(widget, &QObject::destroyed, this, [this, widget]() { - auto runningRequest = m_highlightRequests.find(widget); - if (runningRequest != m_highlightRequests.end()) - cancelRequest(runningRequest.value()); + if (m_highlightRequests.contains(widget)) + cancelRequest(m_highlightRequests.take(widget)); }); request.setResponseCallback( [widget, this, uri, connection] @@ -701,9 +699,8 @@ void Client::cursorPositionChanged(TextEditor::TextEditorWidget *widget) QTimer *timer = m_documentHighlightsTimer[widget]; if (!timer) { const auto uri = DocumentUri::fromFilePath(widget->textDocument()->filePath()); - auto runningRequest = m_highlightRequests.find(widget); - if (runningRequest != m_highlightRequests.end()) - cancelRequest(runningRequest.value()); + if (m_highlightRequests.contains(widget)) + cancelRequest(m_highlightRequests.take(widget)); timer = new QTimer; timer->setSingleShot(true); m_documentHighlightsTimer.insert(widget, timer);