From d4b14d9e9b547a04d688ad14dc1610a3f010e428 Mon Sep 17 00:00:00 2001 From: Kirill Likhodedov Date: Mon, 30 May 2016 17:45:46 +0300 Subject: [PATCH] merge markDirty requests and don't schedule one if nothing is to me marked dirty --- .../vcs/changes/VcsDirtyScopeVfsListener.java | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/VcsDirtyScopeVfsListener.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/VcsDirtyScopeVfsListener.java index 8bda08f65df8..522b0ce876ae 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/VcsDirtyScopeVfsListener.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/VcsDirtyScopeVfsListener.java @@ -66,8 +66,14 @@ public class VcsDirtyScopeVfsListener implements BulkFileListener, Disposable { myQueue.clear(); } + HashSet dirtyFiles = ContainerUtil.newHashSet(); + HashSet 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(); + } } }