diff --git a/platform/lang-impl/src/com/intellij/ui/DeferredIconImpl.java b/platform/lang-impl/src/com/intellij/ui/DeferredIconImpl.java index 9969c66ee51a..d23082d8d225 100644 --- a/platform/lang-impl/src/com/intellij/ui/DeferredIconImpl.java +++ b/platform/lang-impl/src/com/intellij/ui/DeferredIconImpl.java @@ -26,12 +26,10 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ex.ApplicationManagerEx; import com.intellij.openapi.progress.ProcessCanceledException; import com.intellij.openapi.project.IndexNotReadyException; -import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.registry.Registry; import com.intellij.ui.tabs.impl.TabLabel; import com.intellij.util.Alarm; import com.intellij.util.Function; -import com.intellij.util.Processor; import com.intellij.util.containers.TransferToEDTQueue; import com.intellij.util.ui.EmptyIcon; import com.intellij.util.ui.UIUtil; @@ -60,13 +58,7 @@ public class DeferredIconImpl implements DeferredIcon { private long myLastTimeSpent = 0L; private final IconListener myEvalListener; - private static final TransferToEDTQueue ourLaterInvocator = new TransferToEDTQueue("Deferred icon later invocator", new Processor() { - @Override - public boolean process(Runnable runnable) { - runnable.run(); - return true; - } - }, Condition.FALSE, 200); + private static final TransferToEDTQueue ourLaterInvocator = TransferToEDTQueue.createRunnableMerger("Deferred icon later invocator", 200); public DeferredIconImpl(Icon baseIcon, T param, @NotNull Function evaluator, @NotNull IconListener listener, boolean autoUpdatable) { this(baseIcon, param, true, evaluator, listener, autoUpdatable); diff --git a/platform/util/src/com/intellij/util/containers/TransferToEDTQueue.java b/platform/util/src/com/intellij/util/containers/TransferToEDTQueue.java index 565311ec7f77..787ebc320490 100644 --- a/platform/util/src/com/intellij/util/containers/TransferToEDTQueue.java +++ b/platform/util/src/com/intellij/util/containers/TransferToEDTQueue.java @@ -72,6 +72,16 @@ public class TransferToEDTQueue { myShutUpCondition = shutUpCondition; myMaxUnitOfWorkThresholdMs = maxUnitOfWorkThresholdMs; } + + public static TransferToEDTQueue createRunnableMerger(@NotNull @NonNls String name, int maxUnitOfWorkThresholdMs) { + return new TransferToEDTQueue(name, new Processor() { + @Override + public boolean process(Runnable runnable) { + runnable.run(); + return true; + } + }, Condition.FALSE, maxUnitOfWorkThresholdMs); + } private boolean isEmpty() { synchronized (myQueue) {