aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Enrico Tassi <Enrico.Tassi@inria.fr>2014-12-17 14:18:40 +0100
committerGravatar Enrico Tassi <Enrico.Tassi@inria.fr>2014-12-17 15:05:05 +0100
commitfac26d37e7e0c9d2d1e3000256ab4641a6c9f95e (patch)
tree52980ead9de6ded8701846834019345aff15d220
parentaaea1138a3a8b90aac0e8f3753a678467af36e72 (diff)
CoqIDE: cleanup jobs window on worker death
-rw-r--r--ide/session.ml12
-rw-r--r--stm/asyncTaskQueue.ml1
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