Merge pull request #1080 from mprobinson/joypad-driver

Fix joypad driver setting
This commit is contained in:
Twinaphex 2014-10-03 09:53:47 +02:00
commit 7027f974eb
7 changed files with 94 additions and 4 deletions

View File

@ -87,6 +87,19 @@ enum
INPUT_RWEBINPUT,
INPUT_NULL,
JOYPAD_PS3,
JOYPAD_WINXINPUT,
JOYPAD_GX,
JOYPAD_XDK,
JOYPAD_PSP,
JOYPAD_DINPUT,
JOYPAD_UDEV,
JOYPAD_LINUXRAW,
JOYPAD_ANDROID,
JOYPAD_SDL,
JOYPAD_APPLE,
JOYPAD_QNX,
CAMERA_V4L2,
CAMERA_RWEBCAM,
CAMERA_ANDROID,
@ -221,6 +234,34 @@ enum
#define INPUT_DEFAULT_DRIVER INPUT_NULL
#endif
#if defined(__CELLOS_LV2__)
#define JOYPAD_DEFAULT_DRIVER JOYPAD_PS3
#elif defined(HAVE_WINXINPUT)
#define JOYPAD_DEFAULT_DRIVER JOYPAD_WINXINPUT
#elif defined(GEKKO)
#define JOYPAD_DEFAULT_DRIVER JOYPAD_GX
#elif defined(_XBOX)
#define JOYPAD_DEFAULT_DRIVER JOYPAD_XDK
#elif defined(PSP)
#define JOYPAD_DEFAULT_DRIVER JOYPAD_PSP
#elif defined(HAVE_DINPUT)
#define JOYPAD_DEFAULT_DRIVER JOYPAD_DINPUT
#elif defined(HAVE_UDEV)
#define JOYPAD_DEFAULT_DRIVER JOYPAD_UDEV
#elif defined(__linux) && !defined(ANDROID)
#define JOYPAD_DEFAULT_DRIVER JOYPAD_LINUXRAW
#elif defined(ANDROID)
#define JOYPAD_DEFAULT_DRIVER JOYPAD_ANDROID
#elif defined(HAVE_SDL) || defined(HAVE_SDL2)
#define JOYPAD_DEFAULT_DRIVER JOYPAD_SDL
#elif defined(__MACH__)
#define JOYPAD_DEFAULT_DRIVER JOYPAD_APPLE
#elif defined(__QNX__)
#define JOYPAD_DEFAULT_DRIVER JOYPAD_QNX
#else
#define JOYPAD_DEFAULT_DRIVER JOYPAD_NULL
#endif
#if defined(HAVE_V4L2)
#define CAMERA_DEFAULT_DRIVER CAMERA_V4L2
#elif defined(EMSCRIPTEN)

View File

@ -284,6 +284,12 @@ static const void *find_driver_nonempty(const char *label, int i,
if (driver)
strlcpy(str, input_drivers[i]->ident, sizeof_str);
}
else if (!strcmp(label, "input_joypad_driver"))
{
driver = joypad_drivers[i];
if (driver)
strlcpy(str, joypad_drivers[i]->ident, sizeof_str);
}
else if (!strcmp(label, "video_driver"))
{
driver = video_drivers[i];
@ -694,7 +700,6 @@ static void find_input_driver(void)
}
}
void init_drivers_pre(void)
{
find_audio_driver();

View File

@ -690,6 +690,8 @@ extern menu_ctx_driver_t menu_ctx_lakka;
extern menu_ctx_driver_backend_t menu_ctx_backend_common;
extern menu_ctx_driver_backend_t menu_ctx_backend_lakka;
extern rarch_joypad_driver_t *joypad_drivers[];
#define check_netplay_flip_func(trigger_input) check_netplay_flip(BIND_PRESSED(trigger_input, RARCH_NETPLAY_FLIP), BIND_PRESSED(trigger_input, RARCH_FULLSCREEN_TOGGLE_KEY))
#define check_overlay_func(input, old_input) rarch_check_overlay(BIND_PRESSED(input, RARCH_OVERLAY_NEXT), BIND_PRESSED(old_input, RARCH_OVERLAY_NEXT))
#define check_oneshot_func(trigger_input) check_oneshot(BIND_PRESSED(trigger_input, RARCH_FRAMEADVANCE), BIND_PRESSED(trigger_input, RARCH_REWIND))

View File

@ -765,6 +765,7 @@ const char *config_get_default_video(void);
const char *config_get_default_audio(void);
const char *config_get_default_audio_resampler(void);
const char *config_get_default_input(void);
const char *config_get_default_joypad(void);
#ifdef HAVE_MENU
const char *config_get_default_menu(void);
#endif

View File

@ -46,7 +46,7 @@
#include "../file.h"
static rarch_joypad_driver_t *joypad_drivers[] = {
rarch_joypad_driver_t *joypad_drivers[] = {
#ifndef IS_RETROLAUNCH
#ifdef __CELLOS_LV2__
&ps3_joypad,
@ -105,7 +105,7 @@ const rarch_joypad_driver_t *input_joypad_init_driver(const char *ident)
}
}
return NULL;
return input_joypad_init_first();
}
const rarch_joypad_driver_t *input_joypad_init_first(void)

View File

@ -176,6 +176,43 @@ const char *config_get_default_input(void)
}
}
const char *config_get_default_joypad(void)
{
switch (JOYPAD_DEFAULT_DRIVER)
{
case JOYPAD_PS3:
return "ps3";
case JOYPAD_WINXINPUT:
return "winxinput";
case JOYPAD_GX:
return "gx";
case JOYPAD_XDK:
return "xdk";
case JOYPAD_PSP:
return "psp";
case JOYPAD_DINPUT:
return "dinput";
case JOYPAD_UDEV:
return "udev";
case JOYPAD_LINUXRAW:
return "linuxraw";
case JOYPAD_ANDROID:
return "android";
case JOYPAD_SDL:
#ifdef HAVE_SDL2
return "sdl2";
#else
return "sdl";
#endif
case JOYPAD_APPLE:
return "apple";
case JOYPAD_QNX:
return "qnx";
default:
return NULL;
}
}
#ifdef HAVE_MENU
const char *config_get_default_menu(void)
{
@ -251,6 +288,7 @@ void config_set_defaults(void)
const char *def_audio = config_get_default_audio();
const char *def_audio_resampler = config_get_default_audio_resampler();
const char *def_input = config_get_default_input();
const char *def_joypad = config_get_default_joypad();
#ifdef HAVE_MENU
const char *def_menu = config_get_default_menu();
#endif
@ -279,6 +317,9 @@ void config_set_defaults(void)
if (def_input)
strlcpy(g_settings.input.driver,
def_input, sizeof(g_settings.input.driver));
if (def_joypad)
strlcpy(g_settings.input.joypad_driver,
def_input, sizeof(g_settings.input.joypad_driver));
#ifdef HAVE_MENU
if (def_menu)
strlcpy(g_settings.menu.driver,

View File

@ -2304,7 +2304,7 @@ rarch_setting_t *setting_data_get_list(void)
#ifdef HAVE_MENU
CONFIG_STRING(g_settings.menu.driver, "menu_driver", "Menu Driver", config_get_default_menu(), GROUP_NAME, SUBGROUP_NAME, NULL, NULL) WITH_FLAGS(SD_FLAG_IS_DRIVER)
#endif
CONFIG_STRING(g_settings.input.joypad_driver, "input_joypad_driver", "Joypad Driver", "", GROUP_NAME, SUBGROUP_NAME, NULL, NULL) WITH_FLAGS(SD_FLAG_IS_DRIVER)
CONFIG_STRING(g_settings.input.joypad_driver, "input_joypad_driver", "Joypad Driver", config_get_default_joypad(), GROUP_NAME, SUBGROUP_NAME, NULL, NULL) WITH_FLAGS(SD_FLAG_IS_DRIVER)
CONFIG_STRING(g_settings.input.keyboard_layout, "input_keyboard_layout", "Keyboard Layout", "", GROUP_NAME, SUBGROUP_NAME, NULL, NULL) WITH_FLAGS(SD_FLAG_IS_DRIVER)
END_SUB_GROUP()