diff --git a/src/io_thread.c b/src/io_thread.c index 4677428d6..a0e3a8844 100644 --- a/src/io_thread.c +++ b/src/io_thread.c @@ -74,13 +74,20 @@ io_thread_start(GError **error_r) return true; } +void +io_thread_quit(void) +{ + assert(io.loop != NULL); + + g_main_loop_quit(io.loop); +} + void io_thread_deinit(void) { if (io.thread != NULL) { - assert(io.loop != NULL); + io_thread_quit(); - g_main_loop_quit(io.loop); g_thread_join(io.thread); } diff --git a/src/io_thread.h b/src/io_thread.h index 5687aebb9..db925ab8f 100644 --- a/src/io_thread.h +++ b/src/io_thread.h @@ -37,6 +37,14 @@ io_thread_start(GError **error_r); void io_thread_run(void); +/** + * Ask the I/O thread to quit, but does not wait for it. Usually, you + * don't need to call this function, because io_thread_deinit() + * includes this. + */ +void +io_thread_quit(void); + void io_thread_deinit(void);