From a67e776af9bbd7d297aa203922eeabb9c0829172 Mon Sep 17 00:00:00 2001 From: german77 Date: Sat, 26 Nov 2022 09:28:04 -0600 Subject: yuzu-cmd: Fix input callback crash on close --- src/core/hid/emulated_devices.cpp | 1 + src/input_common/main.cpp | 10 ++++++++++ src/yuzu_cmd/emu_window/emu_window_sdl2.cpp | 2 ++ 3 files changed, 13 insertions(+) diff --git a/src/core/hid/emulated_devices.cpp b/src/core/hid/emulated_devices.cpp index 8d367b546..658dbd318 100644 --- a/src/core/hid/emulated_devices.cpp +++ b/src/core/hid/emulated_devices.cpp @@ -145,6 +145,7 @@ void EmulatedDevices::UnloadInput() { for (auto& button : keyboard_modifier_devices) { button.reset(); } + ring_analog_device.reset(); } void EmulatedDevices::EnableConfiguration() { diff --git a/src/input_common/main.cpp b/src/input_common/main.cpp index b2064ef95..76df133f3 100644 --- a/src/input_common/main.cpp +++ b/src/input_common/main.cpp @@ -138,6 +138,16 @@ struct InputSubsystem::Impl { Common::Input::UnregisterFactory(tas_input->GetEngineName()); tas_input.reset(); + Common::Input::UnregisterFactory(camera->GetEngineName()); + Common::Input::UnregisterFactory(camera->GetEngineName()); + camera.reset(); + + Common::Input::UnregisterFactory( + virtual_amiibo->GetEngineName()); + Common::Input::UnregisterFactory( + virtual_amiibo->GetEngineName()); + virtual_amiibo.reset(); + #ifdef HAVE_SDL2 Common::Input::UnregisterFactory(sdl->GetEngineName()); Common::Input::UnregisterFactory(sdl->GetEngineName()); diff --git a/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp b/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp index 4ac72c2f6..37dd1747c 100644 --- a/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp +++ b/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp @@ -7,6 +7,7 @@ #include "common/scm_rev.h" #include "common/settings.h" #include "core/core.h" +#include "core/hid/hid_core.h" #include "core/perf_stats.h" #include "input_common/drivers/keyboard.h" #include "input_common/drivers/mouse.h" @@ -26,6 +27,7 @@ EmuWindow_SDL2::EmuWindow_SDL2(InputCommon::InputSubsystem* input_subsystem_, Co } EmuWindow_SDL2::~EmuWindow_SDL2() { + system.HIDCore().UnloadInputDevices(); input_subsystem->Shutdown(); SDL_Quit(); } -- cgit v1.2.3