diff options
| -rw-r--r-- | vis.c | 8 | ||||
| -rw-r--r-- | vis.h | 12 |
2 files changed, 20 insertions, 0 deletions
@@ -800,6 +800,14 @@ static void window_jumplist_invalidate(Win *win) { ringbuf_invalidate(win->jumplist); } +void vis_interrupt(Vis *vis) { + vis->interrupted = true; +} + +bool vis_interrupt_requested(Vis *vis) { + return vis->interrupted; +} + void vis_do(Vis *vis) { Win *win = vis->win; File *file = win->file; @@ -153,6 +153,18 @@ void vis_resume(Vis*); */ bool vis_signal_handler(Vis*, int signum, const siginfo_t *siginfo, const void *context); /** + * Interrupt long running operation. + * @rst + * .. warning:: There is no guarantee that a long running operation is actually + * interrupted. It is analogous to cooperative multitasking where + * the operation has to voluntarily yield control. + * .. note:: It is invoked from `vis_signal_handler` when receiving ``SIGINT``. + * @endrst + */ +void vis_interrupt(Vis*); +/** Check whether interruption was requested. */ +bool vis_interrupt_requested(Vis*); +/** * @} * @defgroup vis_draw * @{ |
