diff --git a/external/parallel-rdp/ParallelRDPWrapper.cpp b/external/parallel-rdp/ParallelRDPWrapper.cpp index 95e396ae..359757ef 100644 --- a/external/parallel-rdp/ParallelRDPWrapper.cpp +++ b/external/parallel-rdp/ParallelRDPWrapper.cpp @@ -33,7 +33,9 @@ void ParallelRDP::LoadWSIPlatform(Vulkan::InstanceFactory* instanceFactory, std: windowInfo = std::move(newWindowInfo); } -void ParallelRDP::Init(const u8* rdram) { +void ParallelRDP::Init(Vulkan::InstanceFactory* factory, std::unique_ptr&& wsiPlatform, std::unique_ptr&& newWindowInfo, const u8* rdram) { + LoadWSIPlatform(factory, std::move(wsiPlatform), std::move(newWindowInfo)); + ResourceLayout vertLayout; ResourceLayout fragLayout; @@ -78,10 +80,6 @@ void ParallelRDP::Init(const u8* rdram) { } } -ParallelRDP::ParallelRDP(Vulkan::InstanceFactory* factory, std::unique_ptr&& wsi_platform, std::unique_ptr&& newWindowInfo) { - LoadWSIPlatform(factory, std::move(wsi_platform), std::move(newWindowInfo)); -} - void ParallelRDP::DrawFullscreenTexturedQuad(Util::IntrusivePtr image, Util::IntrusivePtr cmd) { cmd->set_texture(0, 0, image->get_view(), Vulkan::StockSampler::LinearClamp); cmd->set_program(fullscreen_quad_program); diff --git a/external/parallel-rdp/ParallelRDPWrapper.hpp b/external/parallel-rdp/ParallelRDPWrapper.hpp index b617a27c..8b87b9bf 100644 --- a/external/parallel-rdp/ParallelRDPWrapper.hpp +++ b/external/parallel-rdp/ParallelRDPWrapper.hpp @@ -15,8 +15,8 @@ public: virtual ~WindowInfo() = default; }; - void Init(const u8*); - ParallelRDP(Vulkan::InstanceFactory*, std::unique_ptr&&, std::unique_ptr&&); + void Init(Vulkan::InstanceFactory*, std::unique_ptr&&, std::unique_ptr&&, const u8*); + ParallelRDP() = default; ~ParallelRDP() { delete wsi; delete command_processor; diff --git a/src/frontend/EmuThread.cpp b/src/frontend/EmuThread.cpp index 875ee2cb..e40331e3 100644 --- a/src/frontend/EmuThread.cpp +++ b/src/frontend/EmuThread.cpp @@ -4,9 +4,11 @@ #include "Audio.hpp" EmuThread::EmuThread(std::unique_ptr&& instance_, std::unique_ptr&& wsiPlatform_, std::unique_ptr&& windowInfo_, QObject* parent_object) noexcept - : QThread(parent_object), instance(std::move(instance_)), wsiPlatform(std::move(wsiPlatform_)), windowInfo(std::move(windowInfo_)), parallel(instance.get(), std::move(wsiPlatform), std::move(windowInfo)) {} + : QThread(parent_object), instance(std::move(instance_)), wsiPlatform(std::move(wsiPlatform_)), windowInfo(std::move(windowInfo_)) {} [[noreturn]] void EmuThread::run() noexcept { + parallel.Init(instance.get(), std::move(wsiPlatform), std::move(windowInfo), core->cpu->GetMem().GetRDRAMPtr()); + while (true) { if (!core->pause) { core->Run(settings->getVolumeL(), settings->getVolumeR()); diff --git a/src/frontend/KaizenQt.cpp b/src/frontend/KaizenQt.cpp index c73e219c..d1b72b63 100644 --- a/src/frontend/KaizenQt.cpp +++ b/src/frontend/KaizenQt.cpp @@ -15,7 +15,6 @@ KaizenQt::KaizenQt() noexcept : QWidget(nullptr) { std::move(mainWindow->view.vulkanWidget->windowInfo), mainWindow); emuThread->core = new n64::Core(emuThread->parallel); - emuThread->parallel.Init(emuThread->core->cpu->GetMem().GetRDRAMPtr()); ConnectMainWindowSignalsToSlots();