From cf6c944a833d86761ad4c18107c2cf8972889d0b Mon Sep 17 00:00:00 2001
From: Andrew Randrianasulu <randrianasulu@gmail.com>
Date: Sun, 11 Jan 2026 00:19:38 +0300
Subject: [PATCH] Fix  build on debian/forky, "time" struct in evdev input
 system changed patch from https://github.com/libsdl-org/SDL/pull/7884/files

---
 cinelerra-5.1/cinelerra/wintv.C | 15 +++++++++++++--
 cinelerra-5.1/cinelerra/x10tv.C | 14 ++++++++++++--
 2 files changed, 25 insertions(+), 4 deletions(-)

diff --git a/cinelerra-5.1/cinelerra/wintv.C b/cinelerra-5.1/cinelerra/wintv.C
index 28a10e57..1a6d7f88 100644
--- a/cinelerra-5.1/cinelerra/wintv.C
+++ b/cinelerra-5.1/cinelerra/wintv.C
@@ -40,6 +40,17 @@
 #include <dirent.h>
 #include <linux/input.h>
 
+/* The field to look up in struct input_event for integer seconds */
+#ifndef input_event_sec
+#define input_event_sec time.tv_sec
+#endif
+
+/* The field to look up in struct input_event for fractional seconds */
+#ifndef input_event_usec
+#define input_event_usec time.tv_usec
+#endif
+
+
 WinTV::WinTV(MWindow *mwindow, int ifd)
 {
 	this->mwindow = mwindow;
@@ -183,12 +194,12 @@ void WinTV::handle_event()
 	case EV_MSC:
 		break;
 	default: {
-		time_t t = ev->time.tv_sec;
+		time_t t = ev->input_event_sec;
 		struct tm *tp = localtime(&t);
 		printf("wintv event: %4d/%02d/%02d %02d:%02d:%02d.%03d = (%d, %d, 0x%x)\n",
 			tp->tm_year+1900, tp->tm_mon+1, tp->tm_mday,
 			tp->tm_hour, tp->tm_min, tp->tm_sec,
-			(int)ev->time.tv_usec/1000, ev->type, ev->code, ev->value);
+			(int)ev->input_event_usec/1000, ev->type, ev->code, ev->value);
 		break; }
 	}
 }
diff --git a/cinelerra-5.1/cinelerra/x10tv.C b/cinelerra-5.1/cinelerra/x10tv.C
index 616ac596..be3880cf 100644
--- a/cinelerra-5.1/cinelerra/x10tv.C
+++ b/cinelerra-5.1/cinelerra/x10tv.C
@@ -40,6 +40,16 @@
 #include <dirent.h>
 #include <linux/input.h>
 
+/* The field to look up in struct input_event for integer seconds */
+#ifndef input_event_sec
+#define input_event_sec time.tv_sec
+#endif
+
+/* The field to look up in struct input_event for fractional seconds */
+#ifndef input_event_usec
+#define input_event_usec time.tv_usec
+#endif
+
 X10TV::X10TV(MWindow *mwindow, int *fds, int nfds)
 {
 	this->mwindow = mwindow;
@@ -218,12 +228,12 @@ void X10TV::handle_event(int fd)
 	case EV_MSC:
 		break;
 	default: {
-		time_t t = ev->time.tv_sec;
+		time_t t = ev->input_event_sec;
 		struct tm *tp = localtime(&t);
 		printf("x10tv event %d: %4d/%02d/%02d %02d:%02d:%02d.%03d = (%d, %d, 0x%x)\n",
 			fd, tp->tm_year+1900, tp->tm_mon+1, tp->tm_mday,
 			tp->tm_hour, tp->tm_min, tp->tm_sec,
-			(int)ev->time.tv_usec/1000, ev->type, ev->code, ev->value);
+			(int)ev->input_event_usec/1000, ev->type, ev->code, ev->value);
 		break; }
 	}
 }
-- 
2.52.0

