[arch-commits] Commit in sdl2/repos (3 files)
Sven-Hendrik Haase
svenstaro at gemini.archlinux.org
Mon Oct 11 03:07:00 UTC 2021
Date: Monday, October 11, 2021 @ 03:06:59
Author: svenstaro
Revision: 425784
archrelease: copy trunk to testing-x86_64
Added:
sdl2/repos/testing-x86_64/
sdl2/repos/testing-x86_64/PKGBUILD
(from rev 425783, sdl2/trunk/PKGBUILD)
sdl2/repos/testing-x86_64/fix-hidapi.patch
(from rev 425783, sdl2/trunk/fix-hidapi.patch)
------------------+
PKGBUILD | 64 ++++++++++++++++++++
fix-hidapi.patch | 165 +++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 229 insertions(+)
Copied: sdl2/repos/testing-x86_64/PKGBUILD (from rev 425783, sdl2/trunk/PKGBUILD)
===================================================================
--- testing-x86_64/PKGBUILD (rev 0)
+++ testing-x86_64/PKGBUILD 2021-10-11 03:06:59 UTC (rev 425784)
@@ -0,0 +1,64 @@
+# Maintainer: Sven-Hendrik Haase <svenstaro at gmail.com>
+
+pkgname=sdl2
+pkgver=2.0.16
+pkgrel=4
+pkgdesc="A library for portable low-level access to a video framebuffer, audio output, mouse, and keyboard (Version 2)"
+arch=('x86_64')
+url="https://www.libsdl.org"
+license=('MIT')
+depends=('glibc' 'libxext' 'libxrender' 'libx11' 'libgl' 'libxcursor' 'libibus' 'hidapi' 'libusb')
+makedepends=('alsa-lib' 'mesa' 'libpulse' 'libxrandr' 'libxinerama' 'wayland' 'libxkbcommon'
+ 'wayland-protocols' 'ibus' 'fcitx' 'libxss' 'cmake' 'jack' 'ninja' 'pipewire'
+ 'libdecor')
+optdepends=('alsa-lib: ALSA audio driver'
+ 'libpulse: PulseAudio audio driver'
+ 'jack: JACK audio driver'
+ 'pipewire: PipeWire audio driver'
+ 'libdecor: Wayland client decorations')
+source=("https://www.libsdl.org/release/SDL2-${pkgver}.tar.gz"{,.sig}
+ https://github.com/libsdl-org/SDL/commit/25cd749adba77e1a6f3f31f80f8768c0aaaad5b0.patch)
+sha512sums=('ec75ef8526792650c2647b78bb0244f973774418aeae33a2182d90ce696b30acb652f8be9c2012a16c1c5d5622f7630ff2e1eadae27ea3dc78ab47730cf5e62f'
+ 'SKIP'
+ '5e66ffb510bc08c8dd5280d3e7888fa67424ddea3ecc2cee36097a177f3a5bd844d7998ee12b6244eacd16cfde7926eb4bd9c06073907d5f65ed33dc6a1dcf3b')
+validpgpkeys=('1528635D8053A57F77D1E08630A59377A7763BE6') # Sam Lantinga
+
+prepare() {
+ cd SDL2-${pkgver}
+ # Fix FS#72299
+ patch -Np1 -i "$srcdir"/25cd749adba77e1a6f3f31f80f8768c0aaaad5b0.patch
+}
+
+build() {
+ cd SDL2-${pkgver}
+ cmake \
+ -Bbuild \
+ -GNinja \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DSDL_STATIC=OFF \
+ -DSDL_DLOPEN=ON \
+ -DARTS=OFF \
+ -DESD=OFF \
+ -DNAS=OFF \
+ -DALSA=ON \
+ -DHIDAPI=ON \
+ -DPULSEAUDIO_SHARED=ON \
+ -DVIDEO_WAYLAND=ON \
+ -DRPATH=OFF \
+ -DCLOCK_GETTIME=ON \
+ -DJACK_SHARED=ON \
+ -DPIPEWIRE=ON \
+ -DPIPEWIRE_SHARED=ON
+ ninja -C build
+}
+
+package() {
+ cd SDL2-${pkgver}
+ DESTDIR="${pkgdir}" ninja -C build install
+
+ sed -i "s/libSDL2\.a/libSDL2main.a/g" "$pkgdir"/usr/lib/cmake/SDL2/SDL2Targets-noconfig.cmake
+
+ install -Dm644 LICENSE.txt "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+}
+
+# vim: ts=2 sw=2 et:
Copied: sdl2/repos/testing-x86_64/fix-hidapi.patch (from rev 425783, sdl2/trunk/fix-hidapi.patch)
===================================================================
--- testing-x86_64/fix-hidapi.patch (rev 0)
+++ testing-x86_64/fix-hidapi.patch 2021-10-11 03:06:59 UTC (rev 425784)
@@ -0,0 +1,165 @@
+--- a/src/hidapi/SDL_hidapi.c Sun Jun 28 17:45:07 2020 -0400
++++ a/src/hidapi/SDL_hidapi.c Mon Jul 06 10:47:27 2020 +0200
+@@ -301,7 +301,7 @@
+ #include "hidapi.h"
+
+ struct hidapi_backend {
+-#define F(x) typeof(x) *x
++#define F(x) __typeof__(x) *x
+ F(hid_write);
+ F(hid_read_timeout);
+ F(hid_read);
+@@ -458,8 +458,9 @@
+ #ifdef SDL_LIBUSB_DYNAMIC
+ libusb_ctx.libhandle = SDL_LoadObject(SDL_LIBUSB_DYNAMIC);
+ if (libusb_ctx.libhandle != NULL) {
++ SDL_bool loaded = SDL_TRUE;
+ #define LOAD_LIBUSB_SYMBOL(func) \
+- libusb_ctx.func = SDL_LoadFunction(libusb_ctx.libhandle, "libusb_" #func);
++ if (!(libusb_ctx.func = SDL_LoadFunction(libusb_ctx.libhandle, "libusb_" #func))) {loaded = SDL_FALSE;}
+ LOAD_LIBUSB_SYMBOL(init)
+ LOAD_LIBUSB_SYMBOL(exit)
+ LOAD_LIBUSB_SYMBOL(get_device_list)
+@@ -488,9 +489,17 @@
+ LOAD_LIBUSB_SYMBOL(handle_events_completed)
+ #undef LOAD_LIBUSB_SYMBOL
+
+- if ((err = LIBUSB_hid_init()) < 0) {
++ if (loaded == SDL_TRUE) {
++ if ((err = LIBUSB_hid_init()) < 0) {
++ SDL_UnloadObject(libusb_ctx.libhandle);
++ libusb_ctx.libhandle = NULL;
++ return err;
++ }
++ } else {
+ SDL_UnloadObject(libusb_ctx.libhandle);
+- return err;
++ libusb_ctx.libhandle = NULL;
++ /* SDL_LogWarn(SDL_LOG_CATEGORY_INPUT, SDL_LIBUSB_DYNAMIC " found but could not load function."); */
++ /* ignore error: continue without libusb */
+ }
+ }
+ #endif /* SDL_LIBUSB_DYNAMIC */
+@@ -502,13 +511,16 @@
+ if (udev_ctx && (err = PLATFORM_hid_init()) < 0) {
+ #ifdef SDL_LIBUSB_DYNAMIC
+ if (libusb_ctx.libhandle) {
++ LIBUSB_hid_exit();
+ SDL_UnloadObject(libusb_ctx.libhandle);
++ libusb_ctx.libhandle = NULL;
+ }
+ #endif /* SDL_LIBUSB_DYNAMIC */
+ return err;
+ }
+ #endif /* HAVE_PLATFORM_BACKEND */
+
++ SDL_hidapi_wasinit = SDL_TRUE;
+ return 0;
+ }
+
+@@ -519,6 +531,7 @@
+ if (SDL_hidapi_wasinit == SDL_FALSE) {
+ return 0;
+ }
++ SDL_hidapi_wasinit = SDL_FALSE;
+
+ #if HAVE_PLATFORM_BACKEND
+ if (udev_ctx) {
+@@ -529,6 +542,7 @@
+ if (libusb_ctx.libhandle) {
+ err |= LIBUSB_hid_exit(); /* Ehhhhh */
+ SDL_UnloadObject(libusb_ctx.libhandle);
++ libusb_ctx.libhandle = NULL;
+ }
+ #endif /* SDL_LIBUSB_DYNAMIC */
+ return err;
+@@ -546,16 +560,30 @@
+ #endif
+ struct hid_device_info *devs = NULL, *last = NULL, *new_dev;
+
+- if (SDL_hidapi_wasinit == SDL_FALSE) {
+- hid_init();
++ if (hid_init() != 0) {
++ return NULL;
+ }
+
+ #ifdef SDL_LIBUSB_DYNAMIC
+ if (libusb_ctx.libhandle) {
+ usb_devs = LIBUSB_hid_enumerate(vendor_id, product_id);
++ #ifdef DEBUG_HIDAPI
++ SDL_Log("libusb devices found:");
++ #endif
+ for (usb_dev = usb_devs; usb_dev; usb_dev = usb_dev->next) {
+ new_dev = (struct hid_device_info*) SDL_malloc(sizeof(struct hid_device_info));
++ if (!new_dev) {
++ LIBUSB_hid_free_enumeration(usb_devs);
++ hid_free_enumeration(devs);
++ SDL_OutOfMemory();
++ return NULL;
++ }
+ LIBUSB_CopyHIDDeviceInfo(usb_dev, new_dev);
++ #ifdef DEBUG_HIDAPI
++ SDL_Log(" - %ls %ls 0x%.4hx 0x%.4hx",
++ usb_dev->manufacturer_string, usb_dev->product_string,
++ usb_dev->vendor_id, usb_dev->product_id);
++ #endif
+
+ if (last != NULL) {
+ last->next = new_dev;
+@@ -570,8 +598,16 @@
+ #if HAVE_PLATFORM_BACKEND
+ if (udev_ctx) {
+ raw_devs = PLATFORM_hid_enumerate(vendor_id, product_id);
++#ifdef DEBUG_HIDAPI
++ SDL_Log("hidraw devices found:");
++#endif
+ for (raw_dev = raw_devs; raw_dev; raw_dev = raw_dev->next) {
+ SDL_bool bFound = SDL_FALSE;
++#ifdef DEBUG_HIDAPI
++ SDL_Log(" - %ls %ls 0x%.4hx 0x%.4hx",
++ raw_dev->manufacturer_string, raw_dev->product_string,
++ raw_dev->vendor_id, raw_dev->product_id);
++#endif
+ #ifdef SDL_LIBUSB_DYNAMIC
+ for (usb_dev = usb_devs; usb_dev; usb_dev = usb_dev->next) {
+ if (raw_dev->vendor_id == usb_dev->vendor_id &&
+@@ -584,6 +620,17 @@
+ #endif
+ if (!bFound) {
+ new_dev = (struct hid_device_info*) SDL_malloc(sizeof(struct hid_device_info));
++ if (!new_dev) {
++#ifdef SDL_LIBUSB_DYNAMIC
++ if (libusb_ctx.libhandle) {
++ LIBUSB_hid_free_enumeration(usb_devs);
++ }
++#endif
++ PLATFORM_hid_free_enumeration(raw_devs);
++ hid_free_enumeration(devs);
++ SDL_OutOfMemory();
++ return NULL;
++ }
+ PLATFORM_CopyHIDDeviceInfo(raw_dev, new_dev);
+ new_dev->next = NULL;
+
+@@ -624,8 +671,8 @@
+ {
+ hid_device *pDevice = NULL;
+
+- if (SDL_hidapi_wasinit == SDL_FALSE) {
+- hid_init();
++ if (hid_init() != 0) {
++ return NULL;
+ }
+
+ #if HAVE_PLATFORM_BACKEND
+@@ -651,8 +698,8 @@
+ {
+ hid_device *pDevice = NULL;
+
+- if (SDL_hidapi_wasinit == SDL_FALSE) {
+- hid_init();
++ if (hid_init() != 0) {
++ return NULL;
+ }
+
+ #if HAVE_PLATFORM_BACKEND
More information about the arch-commits
mailing list