Skip to content

Commit

Permalink
Minor fixes to udev input drivers. Add support for canary builds to l…
Browse files Browse the repository at this point in the history
…akka updater stuff (libretro#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
  • Loading branch information
GavinDarkglider authored Oct 25, 2023
1 parent 535898d commit 5356afc
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 7 deletions.
4 changes: 4 additions & 0 deletions Makefile.common
Original file line number Diff line number Diff line change
Expand Up @@ -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 \
Expand Down
4 changes: 3 additions & 1 deletion file_path_special.h
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
17 changes: 11 additions & 6 deletions input/drivers/udev_input.c
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
#include <linux/types.h>
#include <linux/input.h>
#include <linux/kd.h>
#include <linux/version.h>
#elif defined(__FreeBSD__)
#include <dev/evdev/input.h>
#endif
Expand Down Expand Up @@ -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 */

Expand Down Expand Up @@ -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
}

/**
Expand Down
6 changes: 6 additions & 0 deletions input/drivers_joypad/udev_joypad.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
4 changes: 4 additions & 0 deletions menu/cbs/menu_cbs_ok.c
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand All @@ -259,6 +260,9 @@ static char *lakka_get_project(void)

pclose(command_file);
return lakka_project;
#else
return "/";
#endif
}
#endif
#endif
Expand Down

0 comments on commit 5356afc

Please sign in to comment.