From 22e0c97e755f8fda43e01ae78245cc177ecaf76c Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 6 Apr 2016 08:36:58 +0200 Subject: [PATCH] give Changes View threads a chance to invokeAndWait, e.g. for VFS refresh events (ChangeListManagerImpl.waitEverythingDoneInTestMode) --- .../vcs/changes/ChangeListManagerImpl.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 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 b15a60b2a21a..367bf750473e 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 @@ -57,6 +57,7 @@ import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.MultiMap; import com.intellij.util.continuation.ContinuationPause; import com.intellij.util.messages.Topic; +import com.intellij.util.ui.UIUtil; import com.intellij.vcsUtil.VcsUtil; import org.jdom.Element; import org.jetbrains.annotations.CalledInAwt; @@ -65,10 +66,7 @@ import org.jetbrains.annotations.*; import javax.swing.*; import java.io.File; import java.util.*; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Future; -import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.*; import java.util.concurrent.atomic.AtomicReference; /** @@ -1684,10 +1682,14 @@ public class ChangeListManagerImpl extends ChangeListManagerEx implements Projec @TestOnly public void waitEverythingDoneInTestMode() { assert ApplicationManager.getApplication().isUnitTestMode(); - Future future = ourUpdateAlarm.get(); - if (future != null) { + while (true) { + Future future = ourUpdateAlarm.get(); + if (future == null) break; + + UIUtil.dispatchAllInvocationEvents(); try { - future.get(); + future.get(10, TimeUnit.MILLISECONDS); + break; } catch (InterruptedException e) { LOG.error(e); @@ -1695,6 +1697,8 @@ public class ChangeListManagerImpl extends ChangeListManagerEx implements Projec catch (ExecutionException e) { LOG.error(e); } + catch (TimeoutException ignore) { + } } }