diff --git a/platform/diff-impl/src/com/intellij/openapi/vcs/ex/LineStatusTrackerBase.java b/platform/diff-impl/src/com/intellij/openapi/vcs/ex/LineStatusTrackerBase.java index 370b92619536..b68e21367113 100644 --- a/platform/diff-impl/src/com/intellij/openapi/vcs/ex/LineStatusTrackerBase.java +++ b/platform/diff-impl/src/com/intellij/openapi/vcs/ex/LineStatusTrackerBase.java @@ -317,16 +317,20 @@ public abstract class LineStatusTrackerBase { @CalledInAwt private void updateRangeHighlighters() { - myToBeInstalledRanges.removeAll(myToBeDestroyedRanges); + if (myToBeInstalledRanges.isEmpty() && myToBeDestroyedRanges.isEmpty()) return; - for (Range range : myToBeDestroyedRanges) { - disposeHighlighter(range); + synchronized (LOCK) { + myToBeInstalledRanges.removeAll(myToBeDestroyedRanges); + + for (Range range : myToBeDestroyedRanges) { + disposeHighlighter(range); + } + for (Range range : myToBeInstalledRanges) { + createHighlighter(range); + } + myToBeDestroyedRanges.clear(); + myToBeInstalledRanges.clear(); } - for (Range range : myToBeInstalledRanges) { - createHighlighter(range); - } - myToBeDestroyedRanges.clear(); - myToBeInstalledRanges.clear(); } private class MyApplicationListener extends ApplicationAdapter {