From 1a61a7a39febfe5921924fd5af81bb14b4280cd3 Mon Sep 17 00:00:00 2001 From: Megamouse Date: Sat, 6 Jul 2024 17:44:47 +0200 Subject: [PATCH] input: allow running pad thread without emulation --- rpcs3/Emu/Cell/lv2/sys_usbd.cpp | 21 +++++++++++++-------- rpcs3/Input/pad_thread.cpp | 5 ++++- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/rpcs3/Emu/Cell/lv2/sys_usbd.cpp b/rpcs3/Emu/Cell/lv2/sys_usbd.cpp index 0557bc96b0..4787844bc4 100644 --- a/rpcs3/Emu/Cell/lv2/sys_usbd.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_usbd.cpp @@ -835,10 +835,15 @@ void usb_handler_thread::disconnect_usb_device(std::shared_ptr dev, void connect_usb_controller(u8 index, input::product_type type) { - bool already_connected = false; - auto& usbh = g_fxo->get>(); + auto usbh = g_fxo->try_get>(); + if (!usbh) + { + return; + } - if (const auto it = usbh.pad_to_usb.find(index); it != usbh.pad_to_usb.end()) + bool already_connected = false; + + if (const auto it = usbh->pad_to_usb.find(index); it != usbh->pad_to_usb.end()) { if (it->second.first == type) { @@ -846,8 +851,8 @@ void connect_usb_controller(u8 index, input::product_type type) } else { - usbh.disconnect_usb_device(it->second.second, true); - usbh.pad_to_usb.erase(it->first); + usbh->disconnect_usb_device(it->second.second, true); + usbh->pad_to_usb.erase(it->first); } } @@ -859,9 +864,9 @@ void connect_usb_controller(u8 index, input::product_type type) } sys_usbd.success("Adding emulated GunCon3 (controller %d)", index); - std::shared_ptr dev = std::make_shared(index, usbh.get_new_location()); - usbh.connect_usb_device(dev, true); - usbh.pad_to_usb.emplace(index, std::pair(type, dev)); + std::shared_ptr dev = std::make_shared(index, usbh->get_new_location()); + usbh->connect_usb_device(dev, true); + usbh->pad_to_usb.emplace(index, std::pair(type, dev)); } } diff --git a/rpcs3/Input/pad_thread.cpp b/rpcs3/Input/pad_thread.cpp index 4cd8b8f083..92c1a2bc29 100644 --- a/rpcs3/Input/pad_thread.cpp +++ b/rpcs3/Input/pad_thread.cpp @@ -363,7 +363,10 @@ void pad_thread::operator()() } } - update_pad_states(); + if (Emu.IsRunning()) + { + update_pad_states(); + } m_info.now_connect = connected_devices + num_ldd_pad;