mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2026-01-24 10:01:38 +01:00
104 lines
4.1 KiB
Diff
104 lines
4.1 KiB
Diff
From 56c599d75fc5b5b8176bd8b3aec6ea8068f6c60e Mon Sep 17 00:00:00 2001
|
|
From: Martin Pitt <martin@piware.de>
|
|
Date: Mon, 15 Mar 2021 07:09:58 +0100
|
|
Subject: [PATCH 2/2] vala: Stop using deprecated input_event.time
|
|
|
|
Backport the vapi fix [1] for the input_event API change [2], to fix
|
|
building on 32 bit Alpine (and presumably other distributions).
|
|
|
|
[1] https://gitlab.gnome.org/GNOME/vala/-/commit/dbe4b716a8d79704
|
|
[2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=152194fe9c3f
|
|
|
|
Fixes #120
|
|
---
|
|
meson.build | 3 ++-
|
|
src/linux_fixes.vapi | 19 +++++++++++++++++++
|
|
src/umockdev.vala | 10 +++++-----
|
|
3 files changed, 26 insertions(+), 6 deletions(-)
|
|
create mode 100644 src/linux_fixes.vapi
|
|
|
|
diff --git a/meson.build b/meson.build
|
|
index c4c450c..95679fc 100644
|
|
--- a/meson.build
|
|
+++ b/meson.build
|
|
@@ -52,6 +52,7 @@ python = find_program('python3', 'python', required: false)
|
|
|
|
vapi_posix = valac.find_library('posix')
|
|
vapi_linux = valac.find_library('linux')
|
|
+vapi_linux_fixes = valac.find_library('linux_fixes', dirs: srcdir)
|
|
vala_libudev = cc.find_library('udev')
|
|
vala_libutil = cc.find_library('util')
|
|
|
|
@@ -98,7 +99,7 @@ umockdev_lib = shared_library('umockdev',
|
|
'src/uevent_sender.c'],
|
|
vala_vapi: 'umockdev-1.0.vapi',
|
|
vala_gir: 'UMockdev-1.0.gir',
|
|
- dependencies: [glib, gobject, gio, gio_unix, vapi_posix, vapi_linux, vala_libudev, vala_libutil],
|
|
+ dependencies: [glib, gobject, gio, gio_unix, vapi_posix, vapi_linux, vapi_linux_fixes, vala_libudev, vala_libutil],
|
|
link_depends: ['src/umockdev.map'],
|
|
link_args: [
|
|
'-Wl,-export-dynamic',
|
|
diff --git a/src/linux_fixes.vapi b/src/linux_fixes.vapi
|
|
new file mode 100644
|
|
index 0000000..a3ab60b
|
|
--- /dev/null
|
|
+++ b/src/linux_fixes.vapi
|
|
@@ -0,0 +1,19 @@
|
|
+[CCode (cprefix = "", lower_case_cprefix = "")]
|
|
+namespace LinuxFixes {
|
|
+
|
|
+ [CCode (cprefix = "", lower_case_cprefix = "")]
|
|
+ namespace Input {
|
|
+
|
|
+ // https://gitlab.gnome.org/GNOME/vala/-/commit/dbe4b716a8d79704
|
|
+ [CCode (cname = "struct input_event", has_type_id = false, cheader_filename = "linux/input.h")]
|
|
+ public struct Event {
|
|
+ [Version (deprecated = true, replacement = "Event.input_event_sec and Event.input_event_usec")]
|
|
+ public Posix.timeval time;
|
|
+ public time_t input_event_sec;
|
|
+ public long input_event_usec;
|
|
+ public uint16 type;
|
|
+ public uint16 code;
|
|
+ public int32 value;
|
|
+ }
|
|
+ }
|
|
+}
|
|
diff --git a/src/umockdev.vala b/src/umockdev.vala
|
|
index 97e2263..bd9d7ce 100644
|
|
--- a/src/umockdev.vala
|
|
+++ b/src/umockdev.vala
|
|
@@ -890,7 +890,7 @@ public class Testbed: GLib.Object {
|
|
string? recorded_dev = null;
|
|
size_t len;
|
|
MatchInfo match;
|
|
- Linux.Input.Event ev = {};
|
|
+ LinuxFixes.Input.Event ev = {};
|
|
var default_dev_re = new Regex("^# device (.*)$");
|
|
var event_re = new Regex("^E: ([0-9]+)\\.([0-9]+) +([0-9a-fA-F]+) +([0-9a-fA-F]+) +(-?[0-9]+) *#?");
|
|
|
|
@@ -916,17 +916,17 @@ public class Testbed: GLib.Object {
|
|
delay = 0;
|
|
first = false;
|
|
} else {
|
|
- delay = (int) (ev_sec - ev.time.tv_sec) * 1000 + (int) (ev_usec - ev.time.tv_usec) / 1000;
|
|
+ delay = (int) (ev_sec - ev.input_event_sec) * 1000 + (int) (ev_usec - ev.input_event_usec) / 1000;
|
|
if (delay < 0)
|
|
delay = 0;
|
|
}
|
|
- ev.time.tv_sec = ev_sec;
|
|
- ev.time.tv_usec = ev_usec;
|
|
+ ev.input_event_sec = ev_sec;
|
|
+ ev.input_event_usec = ev_usec;
|
|
ev.type = (uint16) match.fetch(3).to_ulong(null, 16);
|
|
ev.code = (uint16) match.fetch(4).to_ulong(null, 16);
|
|
ev.value = int.parse(match.fetch(5));
|
|
|
|
- uint8[] ev_data = new uint8[sizeof(Linux.Input.Event)];
|
|
+ uint8[] ev_data = new uint8[sizeof(LinuxFixes.Input.Event)];
|
|
Posix.memcpy(ev_data, &ev, ev_data.length);
|
|
string script_line = "r " + delay.to_string() + " " + ScriptRunner.encode(ev_data) + "\n";
|
|
assert (Posix.write(script_fd, script_line, script_line.length) == script_line.length);
|
|
--
|
|
2.30.2
|
|
|