mirror of
https://github.com/libretro/RetroArch
synced 2025-04-10 06:44:27 +00:00
We need to check for the instance where udev is only initialized
for the joypad part and not the general input driver
This commit is contained in:
parent
62260cf892
commit
6d90c42bb5
@ -5,14 +5,17 @@
|
|||||||
#include "udev_common.h"
|
#include "udev_common.h"
|
||||||
|
|
||||||
static bool udev_mon_inited;
|
static bool udev_mon_inited;
|
||||||
|
static bool udev_mon_first_inited_is_joypad;
|
||||||
static struct udev_monitor *g_udev_mon;
|
static struct udev_monitor *g_udev_mon;
|
||||||
static struct udev *g_udev;
|
static struct udev *g_udev;
|
||||||
|
|
||||||
bool udev_mon_new(void)
|
bool udev_mon_new(bool is_joypad)
|
||||||
{
|
{
|
||||||
if (udev_mon_inited)
|
if (udev_mon_inited)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
udev_mon_first_inited_is_joypad = is_joypad;
|
||||||
|
|
||||||
g_udev = udev_new();
|
g_udev = udev_new();
|
||||||
if (!g_udev)
|
if (!g_udev)
|
||||||
return false;
|
return false;
|
||||||
@ -31,7 +34,7 @@ bool udev_mon_new(void)
|
|||||||
|
|
||||||
void udev_mon_free(bool is_joypad)
|
void udev_mon_free(bool is_joypad)
|
||||||
{
|
{
|
||||||
if (!udev_mon_inited || is_joypad)
|
if (!udev_mon_inited || (is_joypad && !udev_mon_first_inited_is_joypad))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (g_udev_mon)
|
if (g_udev_mon)
|
||||||
@ -39,9 +42,10 @@ void udev_mon_free(bool is_joypad)
|
|||||||
if (g_udev)
|
if (g_udev)
|
||||||
udev_unref(g_udev);
|
udev_unref(g_udev);
|
||||||
|
|
||||||
g_udev_mon = NULL;
|
g_udev_mon = NULL;
|
||||||
g_udev = NULL;
|
g_udev = NULL;
|
||||||
udev_mon_inited = false;
|
udev_mon_inited = false;
|
||||||
|
udev_mon_first_inited_is_joypad = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool udev_mon_hotplug_available(void)
|
bool udev_mon_hotplug_available(void)
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
#include <boolean.h>
|
#include <boolean.h>
|
||||||
|
|
||||||
bool udev_mon_new(void);
|
bool udev_mon_new(bool is_joypad);
|
||||||
|
|
||||||
void udev_mon_free(bool is_joypad);
|
void udev_mon_free(bool is_joypad);
|
||||||
|
|
||||||
|
@ -621,7 +621,7 @@ static void *udev_input_init(void)
|
|||||||
if (!udev)
|
if (!udev)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (!udev_mon_new())
|
if (!udev_mon_new(false))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
#ifdef HAVE_XKBCOMMON
|
#ifdef HAVE_XKBCOMMON
|
||||||
|
@ -515,7 +515,7 @@ static bool udev_joypad_init(void *data)
|
|||||||
for (i = 0; i < MAX_USERS; i++)
|
for (i = 0; i < MAX_USERS; i++)
|
||||||
udev_pads[i].fd = -1;
|
udev_pads[i].fd = -1;
|
||||||
|
|
||||||
if (!udev_mon_new())
|
if (!udev_mon_new(true))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
enumerate = udev_mon_enumerate();
|
enumerate = udev_mon_enumerate();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user