commit 3445405f4f26337de650d8711c84cd6bd830b78d
Author: Raniconduh <clagv.randomgames@gmail.com>
Date: Tue Feb 07 17:38:48 2023 +0000
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);