diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogProgress.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogProgress.java index 324ab2e835c3..c1561dc7578d 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogProgress.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogProgress.java @@ -35,6 +35,7 @@ public class VcsLogProgress implements Disposable { @NotNull private final List myListeners = ContainerUtil.newArrayList(); @NotNull private final Set myTasksWithVisibleProgress = ContainerUtil.newHashSet(); @NotNull private final Set myTasksWithSilentProgress = ContainerUtil.newHashSet(); + private boolean myDisposed = false; public VcsLogProgress(@NotNull Project project, @NotNull Disposable parent) { Disposer.register(parent, () -> Disposer.dispose(this)); @@ -78,6 +79,10 @@ public class VcsLogProgress implements Disposable { private void started(@NotNull VcsLogProgressIndicator indicator) { synchronized (myLock) { + if (myDisposed) { + indicator.cancel(); + return; + } if (indicator.isVisible()) { myTasksWithVisibleProgress.add(indicator); if (myTasksWithVisibleProgress.size() == 1) fireNotification(ProgressListener::progressStarted); @@ -110,6 +115,7 @@ public class VcsLogProgress implements Disposable { @Override public void dispose() { synchronized (myLock) { + myDisposed = true; for (ProgressIndicator indicator : myTasksWithVisibleProgress) { indicator.cancel(); }