From 1b907e904f1e75106e528f7659bfef4428df1ca6 Mon Sep 17 00:00:00 2001 From: kichikuou Date: Tue, 4 Jan 2022 10:27:36 +0900 Subject: [PATCH] Enable joystick in all platforms --- CMakeLists.txt | 7 ------- config.h.in | 1 - src/sdl_event.c | 13 +++++-------- src/sdl_video.c | 14 ++------------ 4 files changed, 7 insertions(+), 28 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 85dc194..82e7645 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -183,12 +183,6 @@ else() endif() endif() -# Joystick - -if (NOT EMSCRIPTEN AND NOT ANDROID) - set(HAVE_SDLJOY 1) -endif() - # TODO: MMX function (print_summary name) @@ -205,7 +199,6 @@ message("------------------") print_summary(audio ${SUMMARY_AUDIO}) print_summary(cdrom ${SUMMARY_CDROM}) print_summary(midi ${SUMMARY_MIDI}) -print_summary(joystick ${SUMMARY_JOYSTICK}) message("------------------") set(PACKAGE ${PROJECT_NAME}) diff --git a/config.h.in b/config.h.in index 517e405..73cf623 100644 --- a/config.h.in +++ b/config.h.in @@ -27,7 +27,6 @@ #cmakedefine HAVE_GETLOGIN @HAVE_GETLOGIN@ #cmakedefine HAVE_JPEG @HAVE_JPEG@ #cmakedefine HAVE_MMAP @HAVE_MMAP@ -#cmakedefine HAVE_SDLJOY @HAVE_SDLJOY@ #cmakedefine HAVE_SIGACTION @HAVE_SIGACTION@ #cmakedefine HAVE_UNAME @HAVE_UNAME@ #cmakedefine HAVE_WEBP @HAVE_WEBP@ diff --git a/src/sdl_event.c b/src/sdl_event.c index dd7c9d2..f75fb2c 100644 --- a/src/sdl_event.c +++ b/src/sdl_event.c @@ -46,10 +46,8 @@ static void keyEventProsess(SDL_KeyboardEvent *e, boolean pressed); static int mousex, mousey, mouseb; boolean RawKeyInfo[256]; -#if HAVE_SDLJOY /* SDL Joystick */ static int joyinfo=0; -#endif static int mouse_to_rawkey(int button) { switch(button) { @@ -206,7 +204,7 @@ static void sdl_getEvent(void) { mousey = e.tfinger.y * view_h; break; -#if HAVE_SDLJOY + case SDL_JOYAXISMOTION: if (abs(e.jaxis.value) < 0x4000) { joyinfo &= e.jaxis.axis == 0 ? ~0xc : ~3; @@ -216,8 +214,10 @@ static void sdl_getEvent(void) { joyinfo |= 1 << i; } break; + case SDL_JOYBALLMOTION: break; + case SDL_JOYHATMOTION: joyinfo &= ~(SYS35KEY_UP | SYS35KEY_DOWN | SYS35KEY_LEFT | SYS35KEY_RIGHT); switch (e.jhat.value) { @@ -231,6 +231,7 @@ static void sdl_getEvent(void) { case SDL_HAT_RIGHTDOWN: joyinfo |= SYS35KEY_RIGHT | SYS35KEY_DOWN; break; } break; + case SDL_JOYBUTTONDOWN: case SDL_JOYBUTTONUP: if (e.jbutton.button < 4) { @@ -244,7 +245,7 @@ static void sdl_getEvent(void) { } } break; -#endif + default: NOTICE("ev %x\n", e.type); break; @@ -308,10 +309,6 @@ int sdl_getMouseInfo(MyPoint *p) { } int sdl_getJoyInfo(void) { -#ifdef HAVE_SDLJOY sdl_getEvent(); return joyinfo; -#else - return 0; -#endif } diff --git a/src/sdl_video.c b/src/sdl_video.c index 8d2503a..7c4b940 100644 --- a/src/sdl_video.c +++ b/src/sdl_video.c @@ -43,7 +43,6 @@ struct sdl_private_data *sdl_videodev; static int joy_device_index = -1; static boolean integer_scaling = FALSE; -#ifdef HAVE_SDLJOY static SDL_Joystick *js; static boolean joy_open_index(int index) { @@ -55,7 +54,7 @@ static boolean joy_open_index(int index) { int axes = SDL_JoystickNumAxes(js); int buttons = SDL_JoystickNumButtons(js); SDL_JoystickEventState(SDL_ENABLE); - printf("SDL joystick '%s' %d axes %d buttons\n", name, axes, buttons); + NOTICE("SDL joystick '%s' %d axes %d buttons\n", name, axes, buttons); return TRUE; } @@ -70,7 +69,6 @@ static int joy_open(void) { } return -1; } -#endif // HAVE_SDLJOY /* SDL の初期化 */ int sdl_Initilize(void) { @@ -94,9 +92,7 @@ int sdl_Initilize(void) { emscripten_set_visibilitychange_callback(NULL, 0, NULL); #endif -#ifdef HAVE_SDLJOY joy_open(); -#endif return 0; } @@ -110,9 +106,7 @@ void sdl_Remove(void) { SDL_DestroyRenderer(sdl_renderer); -#ifdef HAVE_SDLJOY SDL_JoystickClose(js); -#endif SDL_Quit(); @@ -134,11 +128,7 @@ void sdl_setWindowTitle(char *name) { /* Visual に応じて Window を生成する */ static void window_init(void) { - SDL_Init(SDL_INIT_VIDEO -#ifdef HAVE_SDLJOY - |SDL_INIT_JOYSTICK -#endif - ); + SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK); #ifdef __EMSCRIPTEN__ // Stop SDL from calling emscripten_sleep() in functions that are called