From c675d6394a20bdbb4d159f372c30ad23d5a71608 Mon Sep 17 00:00:00 2001 From: GavinDarkglider <31815002+GavinDarkglider@users.noreply.github.com> Date: Wed, 25 Oct 2023 08:19:00 -0700 Subject: [PATCH] Minor fixes to udev input drivers. Add support for canary builds to lakka updater stuff (#15818) * Input: Udev: Fix touch support building against older kernel headers * Input: Udev: Fix Touch Deep Debug compile issues * Input: Joypad: Udev: Joypad: Add Change detection for udev events This is handy with controllers like the Nintendo Joycons that have a daemon app in the background to handle combining them into one controller(Joycond) Since the device was already added, but joycond clamped permissions on evdev retroarch was never updating the controller input change, this fixes that issue. Note: Needs a patch in joycond as well, to send change uevent. This shouldnt cause any issues with other controllers, as the kernel probably will never send change events for these device types. * Lakka: Add canary builds to updater --- Makefile.common | 4 ++++ file_path_special.h | 4 +++- input/drivers/udev_input.c | 17 +++++++++++------ input/drivers_joypad/udev_joypad.c | 6 ++++++ menu/cbs/menu_cbs_ok.c | 4 ++++ 5 files changed, 28 insertions(+), 7 deletions(-) diff --git a/Makefile.common b/Makefile.common index 2587d2c28420..8b339f3218e7 100644 --- a/Makefile.common +++ b/Makefile.common @@ -1050,6 +1050,10 @@ ifeq ($(HAVE_LAKKA_NIGHTLY), 1) DEFINES += -DHAVE_LAKKA_NIGHTLY endif +ifneq ($(HAVE_LAKKA_CANARY), "") + DEFINES += -DHAVE_LAKKA_CANARY=\"${HAVE_LAKKA_CANARY}\" +endif + ifeq ($(HAVE_MENU_COMMON), 1) OBJ += menu/menu_setting.o \ menu/menu_driver.o \ diff --git a/file_path_special.h b/file_path_special.h index 844141320e5b..7a35d9692bee 100644 --- a/file_path_special.h +++ b/file_path_special.h @@ -75,7 +75,9 @@ RETRO_BEGIN_DECLS #define FILE_PATH_LOBBY_LIBRETRO_URL "http://lobby.libretro.com/" #define FILE_PATH_CORE_THUMBNAILS_URL "http://thumbnails.libretro.com" #define FILE_PATH_CORE_THUMBNAILPACKS_URL "http://thumbnailpacks.libretro.com" -#ifdef HAVE_LAKKA_NIGHTLY +#ifdef HAVE_LAKKA_CANARY +#define FILE_PATH_LAKKA_URL HAVE_LAKKA_CANARY +#elif HAVE_LAKKA_NIGHTLY #define FILE_PATH_LAKKA_URL "http://nightly.builds.lakka.tv/.updater" #else #define FILE_PATH_LAKKA_URL "http://le.builds.lakka.tv" diff --git a/input/drivers/udev_input.c b/input/drivers/udev_input.c index 865194e8b291..9b26076224eb 100644 --- a/input/drivers/udev_input.c +++ b/input/drivers/udev_input.c @@ -51,6 +51,7 @@ #include #include #include +#include #elif defined(__FreeBSD__) #include #endif @@ -119,12 +120,11 @@ /* UDEV_TOUCH_PRINTF_DEBUG */ #ifdef UDEV_TOUCH_DEEP_DEBUG -#define RARCH_DDBG(msg, ...) do{ \ - RARCH_DBG(msg, __VA_ARGS__); \ +#define RARCH_DDBG(...) do{ \ + RARCH_DBG(__VA_ARGS__); \ } while (0) #else -/* TODO - Since C89 doesn't allow variadic macros, we have an empty function instead... */ -void RARCH_DDBG(const char *fmt, ...) { } +#define RARCH_DDBG(msg, ...) #endif /* UDEV_TOUCH_DEEP_DEBUG */ @@ -956,8 +956,13 @@ static void udev_handle_mouse(void *data, */ static void udev_touch_event_ts_copy(const struct input_event *event, udev_touch_ts_t *ts) { - ts->s = event->input_event_sec; - ts->us = event->input_event_usec; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,16,0) + ts->s = event->input_event_sec; + ts->us = event->input_event_usec; +#else + ts->s = event->time.tv_sec; + ts->us = event->time.tv_usec; +#endif } /** diff --git a/input/drivers_joypad/udev_joypad.c b/input/drivers_joypad/udev_joypad.c index f004d904821e..ff4b55dcf037 100644 --- a/input/drivers_joypad/udev_joypad.c +++ b/input/drivers_joypad/udev_joypad.c @@ -506,6 +506,12 @@ static void udev_joypad_poll(void) /* Hotplug removal */ else if (string_is_equal(action, "remove")) udev_joypad_remove_device(devnode); + /* Device change */ + else if (string_is_equal(action, "change")) + { + udev_joypad_remove_device(devnode); + udev_check_device(dev, devnode); + } } udev_device_unref(dev); diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index c847a475cafe..d5033438a550 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -247,6 +247,7 @@ static int (funcname)(const char *path, const char *label, unsigned type, size_t #ifdef HAVE_LAKKA static char *lakka_get_project(void) { +#ifndef HAVE_LAKKA_CANARY size_t len; static char lakka_project[128]; FILE *command_file = popen("cat /etc/release | cut -d - -f 1", "r"); @@ -259,6 +260,9 @@ static char *lakka_get_project(void) pclose(command_file); return lakka_project; +#else + return "/"; +#endif } #endif #endif