diff --git a/rpcs3/Emu/Cell/lv2/sys_usbd.cpp b/rpcs3/Emu/Cell/lv2/sys_usbd.cpp index 69d0fddee2..6c5f758c57 100644 --- a/rpcs3/Emu/Cell/lv2/sys_usbd.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_usbd.cpp @@ -233,9 +233,7 @@ void usb_handler_thread::operator()() // Process fake transfers if (!fake_transfers.empty()) { - const auto usbh = g_fxo->get>(); - - std::lock_guard lock(usbh->mutex); + std::lock_guard lock(this->mutex); u64 timestamp = get_system_time() - Emu.GetPauseTime(); @@ -442,7 +440,9 @@ s32 sys_usbd_initialize(vm::ptr handle) std::lock_guard lock(usbh->mutex); - usbh->is_init = true; + // Must not occur (lv2 allows multiple handles, cellUsbd does not) + verify("sys_usbd Initialized twice" HERE), !usbh->is_init.exchange(true); + *handle = 0x115B; // TODO