merge markDirty requests and don't schedule one if nothing is to me marked dirty

This commit is contained in:
Kirill Likhodedov
2016-05-30 17:46:24 +03:00
parent d060c2f5c2
commit d4b14d9e9b
@@ -66,8 +66,14 @@ public class VcsDirtyScopeVfsListener implements BulkFileListener, Disposable {
myQueue.clear();
}
HashSet<FilePath> dirtyFiles = ContainerUtil.newHashSet();
HashSet<FilePath> dirtyDirs = ContainerUtil.newHashSet();
for (FilesAndDirs filesAndDirs : list) {
dirtyScopeManager.filePathsDirty(filesAndDirs.dirtyFiles, filesAndDirs.dirtyDirs);
dirtyFiles.addAll(filesAndDirs.dirtyFiles);
dirtyDirs.addAll(filesAndDirs.dirtyDirs);
}
if (!dirtyFiles.isEmpty() || !dirtyDirs.isEmpty()) {
dirtyScopeManager.filePathsDirty(dirtyFiles, dirtyDirs);
}
}
};
@@ -156,10 +162,12 @@ public class VcsDirtyScopeVfsListener implements BulkFileListener, Disposable {
}
private void markDirtyOnPooled(@NotNull FilesAndDirs dirtyFilesAndDirs) {
synchronized (myLock) {
myQueue.add(dirtyFilesAndDirs);
if (!dirtyFilesAndDirs.isEmpty()) {
synchronized (myLock) {
myQueue.add(dirtyFilesAndDirs);
}
myZipperUpdater.request();
}
myZipperUpdater.request();
}
/**
@@ -190,5 +198,9 @@ public class VcsDirtyScopeVfsListener implements BulkFileListener, Disposable {
private void addToFiles(@Nullable VirtualFile file) {
add(file, true);
}
private boolean isEmpty() {
return dirtyFiles.isEmpty() && dirtyDirs.isEmpty();
}
}
}