From e63b21289ea08d2c4ca1d44c7ad5b6a6cbdde5cd Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Tue, 12 Jan 2016 16:41:19 +0300 Subject: [PATCH] EA-77437 - IOE: ObjectTree.register: the case of listener fired too quick --- .../codeInsight/daemon/impl/DaemonCodeAnalyzerImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonCodeAnalyzerImpl.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonCodeAnalyzerImpl.java index a4eaa3488a78..d2622a9fa5a8 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonCodeAnalyzerImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonCodeAnalyzerImpl.java @@ -851,7 +851,6 @@ public class DaemonCodeAnalyzerImpl extends DaemonCodeAnalyzerEx implements Pers } if (HeavyProcessLatch.INSTANCE.isRunning()) { final Disposable removeListenerDisposable = Disposer.newDisposable(); - Disposer.register(DaemonCodeAnalyzerImpl.this, removeListenerDisposable); // wait for heavy processing to stop, re-schedule daemon but not too soon HeavyProcessLatch.HeavyProcessListener heavyProcessListener = new HeavyProcessLatch.HeavyProcessListener() { @Override @@ -865,6 +864,8 @@ public class DaemonCodeAnalyzerImpl extends DaemonCodeAnalyzerEx implements Pers } }; HeavyProcessLatch.INSTANCE.addListener(removeListenerDisposable, heavyProcessListener); + Disposer.register(DaemonCodeAnalyzerImpl.this, removeListenerDisposable); + if (!HeavyProcessLatch.INSTANCE.isRunning()) { // in case heavy operation finished right before listener added heavyProcessListener.processFinished();