Use dispose-aware bg-aware syncPublisher in vcs-impl (in trivial cases)

This commit is contained in:
Kirill Likhodedov
2017-08-24 18:01:37 +03:00
parent a6c93bb032
commit 8292c3d776
6 changed files with 16 additions and 18 deletions
@@ -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);
});
}
@@ -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<Pair<String, AbstractVcs>
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;
@@ -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 {
@@ -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) {
@@ -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();
@@ -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) {