From 780abd0d4b3b4e2face7231dbd01eeb1a38de238 Mon Sep 17 00:00:00 2001
From: Roberto Raggi <roberto.raggi@nokia.com>
Date: Fri, 10 Jul 2009 13:57:21 +0200
Subject: [PATCH] Store the document's revision used to compute the
 warning/error marks.

---
 src/plugins/cpptools/cppmodelmanager.cpp | 4 ++++
 src/plugins/cpptools/cppmodelmanager.h   | 3 +++
 2 files changed, 7 insertions(+)

diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp
index 0dad0252894..be6aa86093a 100644
--- a/src/plugins/cpptools/cppmodelmanager.cpp
+++ b/src/plugins/cpptools/cppmodelmanager.cpp
@@ -1316,6 +1316,7 @@ void CppModelManager::onDocumentUpdated(Document::Ptr doc)
             }
 
             Editor e;
+            e.revision = ed->document()->revision();
             e.textEditor = textEditor;
             e.selections = selections;
             e.ifdefedOutBlocks = blockRanges;
@@ -1340,8 +1341,11 @@ void CppModelManager::updateEditorSelections()
 
         TextEditor::ITextEditor *textEditor = ed.textEditor;
         TextEditor::BaseTextEditor *editor = qobject_cast<TextEditor::BaseTextEditor *>(textEditor->widget());
+
         if (! editor)
             continue;
+        else if (editor->document()->revision() != ed.revision)
+            continue; // outdated
 
         editor->setExtraSelections(TextEditor::BaseTextEditor::CodeWarningsSelection,
                                    ed.selections);
diff --git a/src/plugins/cpptools/cppmodelmanager.h b/src/plugins/cpptools/cppmodelmanager.h
index 0cc98d06a8e..40a492b27ca 100644
--- a/src/plugins/cpptools/cppmodelmanager.h
+++ b/src/plugins/cpptools/cppmodelmanager.h
@@ -176,6 +176,9 @@ private:
     mutable QMutex protectSnapshot;
 
     struct Editor {
+        Editor()
+                : revision(-1) {}
+        int revision;
         QPointer<TextEditor::ITextEditor> textEditor;
         QList<QTextEdit::ExtraSelection> selections;
         QList<TextEditor::BaseTextEditor::BlockRange> ifdefedOutBlocks;
-- 
GitLab