From 0eb87e5140207d452f9103ffd25ea0a397bd3d97 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Wed, 18 Jan 2017 12:15:43 +0100 Subject: [PATCH] make sure scheduled or running automake builds are canceled before a process starts --- .../compiler/server/BuildManager.java | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/java/compiler/impl/src/com/intellij/compiler/server/BuildManager.java b/java/compiler/impl/src/com/intellij/compiler/server/BuildManager.java index a5b5b7a9dc1e..bdd840acdb3a 100644 --- a/java/compiler/impl/src/com/intellij/compiler/server/BuildManager.java +++ b/java/compiler/impl/src/com/intellij/compiler/server/BuildManager.java @@ -1520,10 +1520,24 @@ public class BuildManager implements Disposable { }); conn.subscribe(ExecutionManager.EXECUTION_TOPIC, new ExecutionListener() { @Override - public void processTerminated(@NotNull String executorId, - @NotNull ExecutionEnvironment env, - @NotNull ProcessHandler handler, - int exitCode) { + public void processStarting(@NotNull String executorId, @NotNull ExecutionEnvironment env) { + cancelAutoMakeTasks(env.getProject()); // make sure to cancel all automakes waiting in the build queue + } + + @Override + public void processStarted(@NotNull String executorId, @NotNull ExecutionEnvironment env, @NotNull ProcessHandler handler) { + // make sure to cancel all automakes added to the build queue after processStaring and before this event + cancelAutoMakeTasks(env.getProject()); + } + + @Override + public void processNotStarted(@NotNull String executorId, @NotNull ExecutionEnvironment env) { + // augmenting reaction to processTerminated(): in case any automakes were canceled before process start + scheduleAutoMake(); + } + + @Override + public void processTerminated(@NotNull String executorId, @NotNull ExecutionEnvironment env, @NotNull ProcessHandler handler, int exitCode) { scheduleAutoMake(); } });