Thumbnail

rani/cscroll.git

Clone URL: https://git.buni.party/rani/cscroll.git

commit 3445405f4f26337de650d8711c84cd6bd830b78d Author: Raniconduh <clagv.randomgames@gmail.com> Date: Tue Feb 07 17:38:48 2023 +0000 Add timeout for info messages diff --git a/include/info.h b/include/info.h index b45f917..3159ca6 100644 --- a/include/info.h +++ b/include/info.h @@ -16 +18 @@  #ifndef _INFO_H  #define _INFO_H   +#define INFO_TIMEOUT 5 // 5 second timeout for info messages +  enum info_t {   INFO_INFO,   INFO_WARN, diff --git a/src/info.c b/src/info.c index 7e01f9e..937df84 100644 --- a/src/info.c +++ b/src/info.c @@ -36 +37 @@  #include <string.h>  #include <stdarg.h>  #include <stdio.h> +#include <time.h>    #include "info.h"  #include "io.h" @@ -116 +128 @@  struct info_node {   enum info_t type;   char * msg; + time_t start; + bool disp;  };     @@ -6016 +6322 @@ void display_info(enum info_t type, char * fmt, ...) {     va_end(vlist);   + info_buffer.i[n]->disp = true; + info_buffer.i[n]->start = time(NULL); +   info_buffer.n++;   refresh_info();  }      void refresh_info(void) { - if (info_buffer.n == 0 || !info_buffer.w) return; -   size_t n = info_buffer.n - 1; + if (info_buffer.n == 0 || !info_buffer.w || !info_buffer.i[n]->disp) return;   + if (time(NULL) - info_buffer.i[n]->start >= INFO_TIMEOUT) { + info_buffer.i[n]->disp = false; + return; + }     int cp = get_info_color(info_buffer.i[n]);   werase(info_buffer.w);