* Joystick hotplug support (#4141) * use SDL_PollEvent instead of SDL_JoystickUpdate Register hot plugged controller by GUID if they were configured in a previous session * Move SDL_PollEvent into its own thread * Don't store SDLJoystick pointer in Input Device; Get pointer on each GetStatus call * Fix that joystick_list gets cleared after SDL_Quit * Add VirtualJoystick for InputDevices thats never nullptr * fixup! Add VirtualJoystick for InputDevices thats never nullptr * fixup! fixup! Add VirtualJoystick for InputDevices thats never nullptr * Remove SDL_GameController, make SDL_Joystick* unique_ptr * fixup! Remove SDL_GameController, make SDL_Joystick* unique_ptr * Adressed feedback; fixed handling of same guid reconnects * fixup! Adressed feedback; fixed handling of same guid reconnects * merge the two joystick_lists into one * make SDLJoystick a member of VirtualJoystick * fixup! make SDLJoystick a member of VirtualJoystick * fixup! make SDLJoystick a member of VirtualJoystick * fixup! fixup! make SDLJoystick a member of VirtualJoystick * SDLJoystick: Addressed review comments * Address one missed review comment
This commit is contained in:
		@@ -16,6 +16,7 @@
 | 
			
		||||
#include "input_common/keyboard.h"
 | 
			
		||||
#include "input_common/main.h"
 | 
			
		||||
#include "input_common/motion_emu.h"
 | 
			
		||||
#include "input_common/sdl/sdl.h"
 | 
			
		||||
#include "yuzu_cmd/emu_window/emu_window_sdl2.h"
 | 
			
		||||
 | 
			
		||||
void EmuWindow_SDL2::OnMouseMotion(s32 x, s32 y) {
 | 
			
		||||
@@ -116,7 +117,7 @@ EmuWindow_SDL2::EmuWindow_SDL2(bool fullscreen) {
 | 
			
		||||
    SDL_SetMainReady();
 | 
			
		||||
 | 
			
		||||
    // Initialize the window
 | 
			
		||||
    if (SDL_Init(SDL_INIT_VIDEO) < 0) {
 | 
			
		||||
    if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK) < 0) {
 | 
			
		||||
        LOG_CRITICAL(Frontend, "Failed to initialize SDL2! Exiting...");
 | 
			
		||||
        exit(1);
 | 
			
		||||
    }
 | 
			
		||||
@@ -176,6 +177,7 @@ EmuWindow_SDL2::EmuWindow_SDL2(bool fullscreen) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
EmuWindow_SDL2::~EmuWindow_SDL2() {
 | 
			
		||||
    InputCommon::SDL::CloseSDLJoysticks();
 | 
			
		||||
    SDL_GL_DeleteContext(gl_context);
 | 
			
		||||
    SDL_Quit();
 | 
			
		||||
 | 
			
		||||
@@ -220,6 +222,9 @@ void EmuWindow_SDL2::PollEvents() {
 | 
			
		||||
        case SDL_QUIT:
 | 
			
		||||
            is_open = false;
 | 
			
		||||
            break;
 | 
			
		||||
        default:
 | 
			
		||||
            InputCommon::SDL::HandleGameControllerEvent(event);
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user