diff --git a/src/video_core/gpu.cpp b/src/video_core/gpu.cpp index ff7dafb222..a2e87b260a 100644 --- a/src/video_core/gpu.cpp +++ b/src/video_core/gpu.cpp @@ -55,11 +55,11 @@ constexpr u64 GpuClockMultiplier(Settings::GpuClock clock) { struct GPU::Impl { explicit Impl(Core::System& system_, bool is_async_, bool use_nvdec_) - : system{system_} + : gpu_thread{system_} + , system{system_} , use_nvdec{use_nvdec_} , shader_notify() , is_async{is_async_} - , gpu_thread{system_} {} ~Impl() = default; @@ -301,6 +301,10 @@ struct GPU::Impl { return out; } + // Destruction of thread must be done before all (non trivial) + // previous members has been destroyed + VideoCommon::GPUThread::ThreadManager gpu_thread; + Core::System& system; std::unique_ptr renderer; @@ -329,7 +333,6 @@ struct GPU::Impl { const bool is_async; - VideoCommon::GPUThread::ThreadManager gpu_thread; std::unique_ptr cpu_context; Tegra::Control::Scheduler scheduler;