From c6f78a4a6d8746b84b2891e536286d9d6a63015e Mon Sep 17 00:00:00 2001 From: bunnei Date: Fri, 21 Feb 2020 12:40:23 -0500 Subject: frontend: qt: bootmanager: Acquire a shared context in main emu thread. --- src/yuzu/bootmanager.cpp | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) (limited to 'src/yuzu/bootmanager.cpp') diff --git a/src/yuzu/bootmanager.cpp b/src/yuzu/bootmanager.cpp index 704c5ecdd..c3dbb1a88 100644 --- a/src/yuzu/bootmanager.cpp +++ b/src/yuzu/bootmanager.cpp @@ -39,7 +39,10 @@ #include "yuzu/bootmanager.h" #include "yuzu/main.h" -EmuThread::EmuThread(Core::Frontend::GraphicsContext& core_context) : core_context(core_context) {} +EmuThread::EmuThread(GRenderWindow& window) + : shared_context{window.CreateSharedContext()}, + context{(Settings::values.use_asynchronous_gpu_emulation && shared_context) ? *shared_context + : window} {} EmuThread::~EmuThread() = default; @@ -55,15 +58,7 @@ static GMainWindow* GetMainWindow() { void EmuThread::run() { MicroProfileOnThreadCreate("EmuThread"); - // Acquire render context for duration of the thread if this is the rendering thread - if (!Settings::values.use_asynchronous_gpu_emulation) { - core_context.MakeCurrent(); - } - SCOPE_EXIT({ - if (!Settings::values.use_asynchronous_gpu_emulation) { - core_context.DoneCurrent(); - } - }); + Core::Frontend::ScopeAcquireContext acquire_context{context}; emit LoadProgress(VideoCore::LoadCallbackStage::Prepare, 0, 0); -- cgit v1.2.3