aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2017-05-06 22:58:09 +0200
committerMarc André Tanner <mat@brain-dump.org>2017-05-06 23:39:16 +0200
commit124de0785901f1182bb55b34c03c6370bd511043 (patch)
treeefd26b5c9a031dd8931182052826767b76af6740
parent0bd23565ac85f7ab158e256b567c94bbdb7a148b (diff)
downloadvis-124de0785901f1182bb55b34c03c6370bd511043.tar.gz
vis-124de0785901f1182bb55b34c03c6370bd511043.tar.xz
vis: add vis_interrupt{,requested} functions
-rw-r--r--vis.c8
-rw-r--r--vis.h12
2 files changed, 20 insertions, 0 deletions
diff --git a/vis.c b/vis.c
index ba10fc3..0adb491 100644
--- a/vis.c
+++ b/vis.c
@@ -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;
diff --git a/vis.h b/vis.h
index 60cbb12..a73753e 100644
--- a/vis.h
+++ b/vis.h
@@ -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
* @{