diff --git a/Source/Core/Core/Core.cpp b/Source/Core/Core/Core.cpp index 06b76119ce..f408409359 100644 --- a/Source/Core/Core/Core.cpp +++ b/Source/Core/Core/Core.cpp @@ -54,7 +54,7 @@ #include "Core/HW/SystemTimers.h" #include "Core/HW/VideoInterface.h" #include "Core/HW/Wiimote.h" -#include "Core/IOS/Network/Socket.h" +#include "Core/IOS/IPC.h" #include "Core/IOS/USB/Bluetooth/BTEmu.h" #include "Core/IOS/USB/Bluetooth/WiimoteDevice.h" #include "Core/Movie.h" @@ -975,7 +975,7 @@ void UpdateWantDeterminism(bool initial) bool was_unpaused = Core::PauseAndLock(true); g_want_determinism = new_want_determinism; - IOS::HLE::WiiSockMan::GetInstance().UpdateWantDeterminism(new_want_determinism); + IOS::HLE::UpdateWantDeterminism(new_want_determinism); Fifo::UpdateWantDeterminism(new_want_determinism); // We need to clear the cache because some parts of the JIT depend on want_determinism, e.g. use // of FMA. diff --git a/Source/Core/Core/IOS/Device.h b/Source/Core/Core/IOS/Device.h index 23aa9d1dc5..48ba68b10d 100644 --- a/Source/Core/Core/IOS/Device.h +++ b/Source/Core/Core/IOS/Device.h @@ -159,6 +159,7 @@ public: virtual IPCCommandResult IOCtl(const IOCtlRequest& ioctl) { return Unsupported(ioctl); } virtual IPCCommandResult IOCtlV(const IOCtlVRequest& ioctlv) { return Unsupported(ioctlv); } virtual void Update() {} + virtual void UpdateWantDeterminism(bool new_want_determinism) {} virtual DeviceType GetDeviceType() const { return m_device_type; } virtual bool IsOpened() const { return m_is_active; } static IPCCommandResult GetDefaultReply(s32 return_value); diff --git a/Source/Core/Core/IOS/IPC.cpp b/Source/Core/Core/IOS/IPC.cpp index 371942c9eb..85f30f2752 100644 --- a/Source/Core/Core/IOS/IPC.cpp +++ b/Source/Core/Core/IOS/IPC.cpp @@ -44,6 +44,7 @@ #include "Core/IOS/IPC.h" #include "Core/IOS/Network/Net.h" #include "Core/IOS/Network/SSL.h" +#include "Core/IOS/Network/Socket.h" #include "Core/IOS/SDIO/SDIOSlot0.h" #include "Core/IOS/STM/STM.h" #include "Core/IOS/USB/Bluetooth/BTEmu.h" @@ -851,5 +852,12 @@ void UpdateDevices() } } } + +void UpdateWantDeterminism(const bool new_want_determinism) +{ + WiiSockMan::GetInstance().UpdateWantDeterminism(new_want_determinism); + for (const auto& device : s_device_map) + device.second->UpdateWantDeterminism(new_want_determinism); +} } // namespace HLE } // namespace IOS diff --git a/Source/Core/Core/IOS/IPC.h b/Source/Core/Core/IOS/IPC.h index 1c6146b793..79549b2e9e 100644 --- a/Source/Core/Core/IOS/IPC.h +++ b/Source/Core/Core/IOS/IPC.h @@ -77,6 +77,8 @@ void Update(); // Update Devices void UpdateDevices(); +void UpdateWantDeterminism(bool new_want_determinism); + void ExecuteCommand(u32 address); void EnqueueRequest(u32 address);