aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2020-05-14 10:55:51 +0200
committerThomas White <taw@physics.org>2020-07-29 18:42:57 +0200
commitbf3ad7ed1aea595b5730a0c10c3b74e233012aee (patch)
tree1ebfdf82d4d83b215ab30bcdb490b2ed449961a4
parent71e68294863600057f56865443036638b870f17a (diff)
Shut down indexamajig process on exit
-rw-r--r--src/gui_backend_local.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/gui_backend_local.c b/src/gui_backend_local.c
index 2eb5d2b8..ca1ffc73 100644
--- a/src/gui_backend_local.c
+++ b/src/gui_backend_local.c
@@ -39,6 +39,8 @@ struct local_backend_priv
int indexamajig_running;
guint indexamajig_watch;
GPid indexamajig_pid;
+ guint child_watch_source;
+ guint index_readable_source;
};
@@ -221,12 +223,13 @@ static int run_unitcell(struct crystfelproject *proj,
}
priv->indexamajig_running = 1;
- g_child_watch_add(priv->indexamajig_pid,
- watch_indexamajig, proj);
+ priv->child_watch_source = g_child_watch_add(priv->indexamajig_pid,
+ watch_indexamajig, proj);
ioch = g_io_channel_unix_new(ch_stderr);
- g_io_add_watch(ioch, G_IO_IN | G_IO_ERR | G_IO_HUP,
- index_readable, proj);
+ priv->index_readable_source = g_io_add_watch(ioch,
+ G_IO_IN | G_IO_ERR | G_IO_HUP,
+ index_readable, proj);
return 0;
}
@@ -247,7 +250,11 @@ static void shutdown_backend(struct crystfelproject *proj)
{
struct local_backend_priv *priv = proj->backend_private;
- /* FIXME: Shutdown indexamajig child process */
+ if ( priv->indexamajig_running ) {
+ g_source_remove(priv->child_watch_source);
+ g_source_remove(priv->index_readable_source);
+ kill(-priv->indexamajig_pid, SIGINT);
+ }
free(priv);
}