From a96c33e81ef8918743b47511a0488be0d585460a Mon Sep 17 00:00:00 2001 From: Joseph Benden Date: Fri, 17 May 2019 11:49:55 -0700 Subject: Add interval timer to XIM updates Signed-off-by: Joseph Benden --- st.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'st.c') diff --git a/st.c b/st.c index 21c6739..e4df60c 100644 --- a/st.c +++ b/st.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include @@ -142,6 +143,7 @@ typedef struct { int charset; /* current charset */ int icharset; /* selected charset for sequence */ int *tabs; + struct timespec last_ximspot_update; } Term; /* CSI Escape sequence structs */ @@ -1056,6 +1058,7 @@ void tnew(int col, int row) { term = (Term){ .c = { .attr = { .fg = defaultfg, .bg = defaultbg } } }; + clock_gettime(CLOCK_MONOTONIC, &term.last_ximspot_update); tresize(col, row); treset(); } @@ -2744,7 +2747,13 @@ draw(void) term.ocx, term.ocy, term.line[term.ocy][term.ocx]); term.ocx = cx, term.ocy = term.c.y; xfinishdraw(); - xximspot(term.ocx, term.ocy); + + struct timespec now; + clock_gettime(CLOCK_MONOTONIC, &now); + if (ximspot_update_interval && TIMEDIFF(now, term.last_ximspot_update) > ximspot_update_interval) { + xximspot(term.ocx, term.ocy); + term.last_ximspot_update = now; + } } void -- cgit v1.2.3