EA-77437 - IOE: ObjectTree.register: the case of listener fired too quick

This commit is contained in:
Alexey Kudravtsev
2016-01-13 16:05:51 +03:00
parent b9500df9ef
commit e63b21289e
@@ -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();