From cc1c966c9e33bd8fdc5cc9341ffbb2edf8f2ae3d Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Tue, 22 Nov 2016 19:02:21 +0300 Subject: [PATCH] lst: update fields under lock * they're accessed from EDT only, so the lock is unnecesary but this is consistent with the rest of the class follow-up: 42dcb2b --- .../openapi/vcs/ex/LineStatusTrackerBase.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) 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 {