diff options
author | Thomas White <taw@physics.org> | 2021-07-01 18:35:54 +0200 |
---|---|---|
committer | Thomas White <taw@physics.org> | 2021-07-01 18:35:54 +0200 |
commit | e2c1e172b28fed82059b3c73b5b53e591b68a599 (patch) | |
tree | d52cb121662f2a0d5a065d160db4082e03467568 | |
parent | 37abbb3484045ec99210620d45c56f84a991bc9f (diff) |
Fixture display: Fix shutdown logic
-rw-r--r-- | src/repl-connection.c | 10 | ||||
-rw-r--r-- | src/starlet-fixture-display.c | 19 |
2 files changed, 17 insertions, 12 deletions
diff --git a/src/repl-connection.c b/src/repl-connection.c index 663c649..2e3201f 100644 --- a/src/repl-connection.c +++ b/src/repl-connection.c @@ -212,10 +212,18 @@ ReplConnection *repl_connection_new(const char *socket, int repl_send(ReplConnection *repl, const char *line) { GError *error = NULL; - GOutputStream *out = g_io_stream_get_output_stream(G_IO_STREAM(repl->conn)); + GOutputStream *out; + + if ( repl->conn == NULL ) { + fprintf(stderr, "No REPL to send to!\n"); + return 1; + } + if ( repl->verbose ) { printf("%p send: %s\n", repl, line); } + + out = g_io_stream_get_output_stream(G_IO_STREAM(repl->conn)); if ( g_output_stream_write(out, line, strlen(line), NULL, &error) == -1 ) { fprintf(stderr, "Couldn't send: %s\n", error->message); return 1; diff --git a/src/starlet-fixture-display.c b/src/starlet-fixture-display.c index 96ed4fb..cba3497 100644 --- a/src/starlet-fixture-display.c +++ b/src/starlet-fixture-display.c @@ -254,20 +254,17 @@ static gint realise_sig(GtkWidget *da, struct fixture_display *fixd) static gboolean redraw_cb(gpointer data) { struct fixture_display *fixd = data; - if ( !fixd->shutdown ) { - request_intensities(fixd); - request_selection(fixd); - redraw(fixd); - return G_SOURCE_CONTINUE; + if ( repl_closed(fixd->repl) ) { + gtk_main_quit(); + return G_SOURCE_REMOVE; } else { - if ( repl_closed(fixd->repl) ) { - gtk_main_quit(); - return G_SOURCE_REMOVE; - } else { - return G_SOURCE_CONTINUE; + if ( !fixd->shutdown ) { + request_intensities(fixd); + request_selection(fixd); + redraw(fixd); } + return G_SOURCE_CONTINUE; } - } |