1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-04 12:00:25 +00:00

Dynamically load libudev.so.1 on Linux if udev=yes

This makes it possibly to run Linux binaries compiled with udev support on
Linux systems which do not provide udev (typically systemd-less distros).

If udev is missing, we fall back to parsing `/dev/input` like when compiled
without udev support (`udev=no`).

Also adding some verbose debug statements to know which method we're using
when debugging Linux joypad issues.

The libudev so wrappers were generated on Mageia 8 with libudev 246.9 using
https://github.com/hpvb/dynload-wrapper:
```
./generate-wrapper.py --include /usr/include/libudev.h --sys-include '<libudev.h>' \
  --soname libudev.so.1 --init-name libudev --omit-prefix gnu_ \
  --output-header libudev-so_wrap.h --output-implementation libudev-so_wrap.c
```
This commit is contained in:
Rémi Verschelde
2021-02-17 11:28:27 +01:00
parent fa8a47e1bf
commit a10c259c1d
8 changed files with 1154 additions and 14 deletions

View File

@@ -70,10 +70,13 @@ private:
void reset();
};
bool exit_udev;
#ifdef UDEV_ENABLED
bool use_udev = false;
#endif
bool exit_monitor = false;
Mutex joy_mutex;
Thread joy_thread;
Input *input;
Input *input = nullptr;
Joypad joypads[JOYPADS_MAX];
Vector<String> attached_devices;