From 0e95bb4eafbd829d287e0fdb223056ad14eafd6f Mon Sep 17 00:00:00 2001 From: Julia Beliaeva Date: Fri, 24 Nov 2017 08:42:35 +0300 Subject: [PATCH] [vcs-log] dispose VcsLogProgress with project --- .../impl/src/com/intellij/vcs/log/data/VcsLogData.java | 3 +-- .../impl/src/com/intellij/vcs/log/data/VcsLogProgress.java | 6 ++++++ .../test/com/intellij/vcs/log/data/VcsLogRefresherTest.java | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogData.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogData.java index 54f2def153e6..0998ae9a2a45 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogData.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogData.java @@ -93,8 +93,7 @@ public class VcsLogData implements Disposable, VcsLogDataProvider { myUserRegistry = (VcsUserRegistryImpl)ServiceManager.getService(project, VcsUserRegistry.class); myFatalErrorsConsumer = fatalErrorsConsumer; - VcsLogProgress progress = new VcsLogProgress(); - Disposer.register(this, progress); + VcsLogProgress progress = new VcsLogProgress(project, this); VcsLogCachesInvalidator invalidator = CachesInvalidator.EP_NAME.findExtension(VcsLogCachesInvalidator.class); if (invalidator.isValid()) { 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 881170e938f3..324ab2e835c3 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 @@ -20,6 +20,7 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.progress.EmptyProgressIndicator; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.progress.util.AbstractProgressIndicatorBase; +import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Disposer; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; @@ -35,6 +36,11 @@ public class VcsLogProgress implements Disposable { @NotNull private final Set myTasksWithVisibleProgress = ContainerUtil.newHashSet(); @NotNull private final Set myTasksWithSilentProgress = ContainerUtil.newHashSet(); + public VcsLogProgress(@NotNull Project project, @NotNull Disposable parent) { + Disposer.register(parent, () -> Disposer.dispose(this)); + Disposer.register(project, this); + } + @NotNull public ProgressIndicator createProgressIndicator() { return createProgressIndicator(true); diff --git a/platform/vcs-log/impl/test/com/intellij/vcs/log/data/VcsLogRefresherTest.java b/platform/vcs-log/impl/test/com/intellij/vcs/log/data/VcsLogRefresherTest.java index 4902902ddc95..15356573dc22 100644 --- a/platform/vcs-log/impl/test/com/intellij/vcs/log/data/VcsLogRefresherTest.java +++ b/platform/vcs-log/impl/test/com/intellij/vcs/log/data/VcsLogRefresherTest.java @@ -210,7 +210,7 @@ public class VcsLogRefresherTest extends VcsPlatformTest { } }, myProject); return new VcsLogRefresherImpl(myProject, myLogData.getStorage(), myLogProviders, myLogData.getUserRegistry(), myLogData.getIndex(), - new VcsLogProgress(), + new VcsLogProgress(myProject, myLogData), myLogData.getTopCommitsCache(), dataPackConsumer, FAILING_EXCEPTION_HANDLER, RECENT_COMMITS_COUNT ) { @Override