[arch-commits] Commit in sdl2/repos (3 files)

Sven-Hendrik Haase svenstaro at archlinux.org
Mon Jul 6 10:37:29 UTC 2020


    Date: Monday, July 6, 2020 @ 10:37:29
  Author: svenstaro
Revision: 390910

archrelease: copy trunk to testing-x86_64

Added:
  sdl2/repos/testing-x86_64/
  sdl2/repos/testing-x86_64/PKGBUILD
    (from rev 390909, sdl2/trunk/PKGBUILD)
  sdl2/repos/testing-x86_64/fix-hidapi.patch
    (from rev 390909, sdl2/trunk/fix-hidapi.patch)

------------------+
 PKGBUILD         |   62 +++++++++++++++++++
 fix-hidapi.patch |  165 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 227 insertions(+)

Copied: sdl2/repos/testing-x86_64/PKGBUILD (from rev 390909, sdl2/trunk/PKGBUILD)
===================================================================
--- testing-x86_64/PKGBUILD	                        (rev 0)
+++ testing-x86_64/PKGBUILD	2020-07-06 10:37:29 UTC (rev 390910)
@@ -0,0 +1,62 @@
+# Maintainer: Sven-Hendrik Haase <sh at lutzhaase.com>
+
+pkgname=sdl2
+pkgver=2.0.12
+pkgrel=2
+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')
+makedepends=('alsa-lib' 'mesa' 'libpulse' 'libxrandr' 'libxinerama' 'wayland' 'libxkbcommon'
+             'wayland-protocols' 'ibus' 'fcitx' 'libxss' 'cmake' 'jack' 'ninja')
+optdepends=('alsa-lib: ALSA audio driver'
+            'libpulse: PulseAudio audio driver'
+            'jack: JACK audio driver')
+source=("https://www.libsdl.org/release/SDL2-${pkgver}.tar.gz"{,.sig}
+        fix-hidapi.patch)
+sha512sums=('3f1f04af0f3d9dda9c84a2e9274ae8d83ea0da3fc367970a820036cc4dc1dbf990cfc37e4975ae05f0b45a4ffa739c6c19e470c00bf3f2bce9b8b63717b8b317'
+            'SKIP'
+            '69b2e8857dd514cbef3aad60717bb7b2a4621124cd3b90158bf439ee91f301ad847fbde0fd9f08f245f921c285a62e458a4b0e0f7faddf7f2a4d8681c189443a')
+validpgpkeys=('1528635D8053A57F77D1E08630A59377A7763BE6') # Sam Lantinga
+
+prepare() {
+  cd SDL2-${pkgver}
+  # For until https://bugzilla.libsdl.org/show_bug.cgi?id=5221 is fixed
+  sed -i "s/LIBUSB libusb/LIBUSB libusb-1.0/g" cmake/sdlchecks.cmake
+
+  # https://bugzilla.libsdl.org/show_bug.cgi?id=5222
+  patch -Np1 -i "${srcdir}"/fix-hidapi.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
+  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 COPYING.txt "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+}
+
+# vim: ts=2 sw=2 et:

Copied: sdl2/repos/testing-x86_64/fix-hidapi.patch (from rev 390909, sdl2/trunk/fix-hidapi.patch)
===================================================================
--- testing-x86_64/fix-hidapi.patch	                        (rev 0)
+++ testing-x86_64/fix-hidapi.patch	2020-07-06 10:37:29 UTC (rev 390910)
@@ -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