diff options
author | Enrico Tassi <Enrico.Tassi@inria.fr> | 2014-12-17 14:18:40 +0100 |
---|---|---|
committer | Enrico Tassi <Enrico.Tassi@inria.fr> | 2014-12-17 15:05:05 +0100 |
commit | fac26d37e7e0c9d2d1e3000256ab4641a6c9f95e (patch) | |
tree | 52980ead9de6ded8701846834019345aff15d220 | |
parent | aaea1138a3a8b90aac0e8f3753a678467af36e72 (diff) |
CoqIDE: cleanup jobs window on worker death
-rw-r--r-- | ide/session.ml | 12 | ||||
-rw-r--r-- | stm/asyncTaskQueue.ml | 1 |
2 files changed, 10 insertions, 3 deletions
diff --git a/ide/session.ml b/ide/session.ml index 3acd32d7d..4835307ec 100644 --- a/ide/session.ml +++ b/ide/session.ml @@ -325,9 +325,15 @@ let create_jobpage coqtop coqops : jobpage = access (fun _ store -> store#clear ()); !callback jobs; CString.Map.iter (fun id job -> access (fun columns store -> - let line = store#append () in - store#set line (find_string_col "Worker" columns) id; - store#set line (find_string_col "Job name" columns) job)) + let column = find_string_col "Worker" columns in + if job = "Dead" then + store#foreach (fun _ row -> + if store#get ~row ~column = id then store#remove row || true + else false) + else + let line = store#append () in + store#set line column id; + store#set line (find_string_col "Job name" columns) job)) jobs end method on_update ~callback:cb = callback := cb diff --git a/stm/asyncTaskQueue.ml b/stm/asyncTaskQueue.ml index 3cb6e7022..917de9b52 100644 --- a/stm/asyncTaskQueue.ml +++ b/stm/asyncTaskQueue.ml @@ -146,6 +146,7 @@ module Make(T : Task) = struct let manager cpanel (id, proc, ic, oc) = let { WorkerPool.extra = queue; exit; cancelled } = cpanel in + let exit () = report_status ~id "Dead"; exit () in let last_task = ref None in let worker_age = ref `Fresh in let got_token = ref false in |