From 8292c3d77601b621f19bebbe00374f05c63d07d7 Mon Sep 17 00:00:00 2001 From: Kirill Likhodedov Date: Thu, 24 Aug 2017 17:51:37 +0300 Subject: [PATCH] Use dispose-aware bg-aware syncPublisher in vcs-impl (in trivial cases) --- .../openapi/vcs/changes/ChangeListManagerImpl.java | 4 ++-- .../openapi/vcs/changes/RemoteRevisionsCache.java | 7 ++----- .../changes/committed/CommittedChangesTreeBrowser.java | 7 ++++--- .../openapi/vcs/impl/ProjectLevelVcsManagerImpl.java | 3 ++- .../openapi/vcs/impl/projectlevelman/NewMappings.java | 4 ++-- .../openapi/vcs/update/AbstractCommonUpdateAction.java | 9 ++++----- 6 files changed, 16 insertions(+), 18 deletions(-) diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangeListManagerImpl.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangeListManagerImpl.java index a172e16839e4..3ff0a07d4751 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangeListManagerImpl.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangeListManagerImpl.java @@ -24,6 +24,7 @@ import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.progress.*; +import com.intellij.openapi.progress.util.BackgroundTaskUtil; import com.intellij.openapi.project.DumbAwareRunnable; import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectManager; @@ -1565,8 +1566,7 @@ public class ChangeListManagerImpl extends ChangeListManagerEx implements Projec myRevisionsCache.minus(pair); } } - // maybe define modify method? - myProject.getMessageBus().syncPublisher(VcsAnnotationRefresher.LOCAL_CHANGES_CHANGED).dirty(become); + BackgroundTaskUtil.syncPublisher(myProject, VcsAnnotationRefresher.LOCAL_CHANGES_CHANGED).dirty(become); }); } diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/RemoteRevisionsCache.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/RemoteRevisionsCache.java index 2dd1525f8998..c8e2b2d7bc41 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/RemoteRevisionsCache.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/RemoteRevisionsCache.java @@ -19,6 +19,7 @@ import com.intellij.lifecycle.PeriodicalTasksCloser; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.progress.ProcessCanceledException; +import com.intellij.openapi.progress.util.BackgroundTaskUtil; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Pair; import com.intellij.openapi.vcs.*; @@ -80,11 +81,7 @@ public class RemoteRevisionsCache implements PlusMinus boolean somethingChanged = myRemoteRevisionsNumbersCache.updateStep(); somethingChanged |= myRemoteRevisionsStateCache.updateStep(); if (somethingChanged) { - ApplicationManager.getApplication().runReadAction(() -> { - if (!myProject.isDisposed()) { - myProject.getMessageBus().syncPublisher(REMOTE_VERSION_CHANGED).run(); - } - }); + BackgroundTaskUtil.syncPublisher(myProject, REMOTE_VERSION_CHANGED).run(); } } return shouldBeDone; diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/committed/CommittedChangesTreeBrowser.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/committed/CommittedChangesTreeBrowser.java index 256bd7a9528d..86ba24271a5a 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/committed/CommittedChangesTreeBrowser.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/committed/CommittedChangesTreeBrowser.java @@ -27,6 +27,7 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.keymap.Keymap; import com.intellij.openapi.keymap.KeymapManager; +import com.intellij.openapi.progress.util.BackgroundTaskUtil; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.Splitter; import com.intellij.openapi.ui.SplitterProportionsData; @@ -247,7 +248,7 @@ public class CommittedChangesTreeBrowser extends JPanel implements TypeSafeDataP myDetailsView.setUseCase(useCase); myChangeLists = items; myFilteringStrategy.setFilterBase(items); - myProject.getMessageBus().syncPublisher(ITEMS_RELOADED).itemsReloaded(); + BackgroundTaskUtil.syncPublisher(myProject, ITEMS_RELOADED).itemsReloaded(); updateModel(); } @@ -505,9 +506,9 @@ public class CommittedChangesTreeBrowser extends JPanel implements TypeSafeDataP myFilteringStrategy.appendFilterBase(list); myChangesTree.setModel(buildTreeModel(myFilteringStrategy.filterChangeLists(myChangeLists))); - state.applyTo(myChangesTree, (DefaultMutableTreeNode)myChangesTree.getModel().getRoot()); + state.applyTo(myChangesTree, myChangesTree.getModel().getRoot()); TreeUtil.expandAll(myChangesTree); - myProject.getMessageBus().syncPublisher(ITEMS_RELOADED).itemsReloaded(); + BackgroundTaskUtil.syncPublisher(myProject, ITEMS_RELOADED).itemsReloaded(); } public static class MoreLauncher implements Runnable { diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/impl/ProjectLevelVcsManagerImpl.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/impl/ProjectLevelVcsManagerImpl.java index 96f1f412555a..4e207b63ac2c 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/impl/ProjectLevelVcsManagerImpl.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/impl/ProjectLevelVcsManagerImpl.java @@ -32,6 +32,7 @@ import com.intellij.openapi.editor.markup.TextAttributes; import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.progress.ProcessCanceledException; import com.intellij.openapi.progress.ProgressManager; +import com.intellij.openapi.progress.util.BackgroundTaskUtil; import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.project.ProjectManagerListener; @@ -699,7 +700,7 @@ public class ProjectLevelVcsManagerImpl extends ProjectLevelVcsManagerEx impleme @Override public void notifyDirectoryMappingChanged() { - myProject.getMessageBus().syncPublisher(VCS_CONFIGURATION_CHANGED).directoryMappingChanged(); + BackgroundTaskUtil.syncPublisher(myProject, VCS_CONFIGURATION_CHANGED).directoryMappingChanged(); } void readDirectoryMappings(final Element element) { diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/impl/projectlevelman/NewMappings.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/impl/projectlevelman/NewMappings.java index 37c20d9a6f88..544358d21fc4 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/impl/projectlevelman/NewMappings.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/impl/projectlevelman/NewMappings.java @@ -17,6 +17,7 @@ package com.intellij.openapi.vcs.impl.projectlevelman; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; +import com.intellij.openapi.progress.util.BackgroundTaskUtil; import com.intellij.openapi.project.DumbAwareRunnable; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.MessageType; @@ -182,8 +183,7 @@ public class NewMappings { } public void mappingsChanged() { - if (myProject.isDisposed()) return; - myProject.getMessageBus().syncPublisher(ProjectLevelVcsManager.VCS_CONFIGURATION_CHANGED).directoryMappingChanged(); + BackgroundTaskUtil.syncPublisher(myProject, ProjectLevelVcsManager.VCS_CONFIGURATION_CHANGED).directoryMappingChanged(); myFileStatusManager.fileStatusesChanged(); myFileWatchRequestsManager.ping(); diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/update/AbstractCommonUpdateAction.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/update/AbstractCommonUpdateAction.java index 12f30144f050..4ff45875f07a 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/update/AbstractCommonUpdateAction.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/update/AbstractCommonUpdateAction.java @@ -26,6 +26,7 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.options.Configurable; import com.intellij.openapi.progress.*; +import com.intellij.openapi.progress.util.BackgroundTaskUtil; import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ex.ProjectManagerEx; import com.intellij.openapi.util.Ref; @@ -374,10 +375,8 @@ public abstract class AbstractCommonUpdateAction extends AbstractVcsAction { doVfsRefresh(); } finally { myProjectLevelVcsManager.stopBackgroundVcsOperation(); - if (!myProject.isDisposed()) { - myProject.getMessageBus().syncPublisher(UpdatedFilesListener.UPDATED_FILES). - consume(UpdatedFilesReverseSide.getPathsFromUpdatedFiles(myUpdatedFiles)); - } + BackgroundTaskUtil.syncPublisher(myProject, UpdatedFilesListener.UPDATED_FILES). + consume(UpdatedFilesReverseSide.getPathsFromUpdatedFiles(myUpdatedFiles)); } } } @@ -409,7 +408,7 @@ public abstract class AbstractCommonUpdateAction extends AbstractVcsAction { } private void notifyAnnotations() { - final VcsAnnotationRefresher refresher = myProject.getMessageBus().syncPublisher(VcsAnnotationRefresher.LOCAL_CHANGES_CHANGED); + final VcsAnnotationRefresher refresher = BackgroundTaskUtil.syncPublisher(myProject, VcsAnnotationRefresher.LOCAL_CHANGES_CHANGED); UpdateFilesHelper.iterateFileGroupFilesDeletedOnServerFirst(myUpdatedFiles, new UpdateFilesHelper.Callback() { @Override public void onFile(String filePath, String groupId) {