From 40a5f1a13d3d394392610d715361fab5185add56 Mon Sep 17 00:00:00 2001 From: TellowKrinkle Date: Sat, 22 Nov 2025 23:52:39 -0600 Subject: [PATCH] Host: Add RunOnGSThread helper --- pcsx2-qt/QtHost.cpp | 5 +++++ pcsx2/Host.h | 3 +++ tests/ctest/core/StubHost.cpp | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/pcsx2-qt/QtHost.cpp b/pcsx2-qt/QtHost.cpp index 073d4c62a7..5e17a0d406 100644 --- a/pcsx2-qt/QtHost.cpp +++ b/pcsx2-qt/QtHost.cpp @@ -1212,6 +1212,11 @@ void Host::RunOnCPUThread(std::function function, bool block /* = false Q_ARG(const std::function&, std::move(function))); } +void Host::RunOnGSThread(std::function function) +{ + RunOnCPUThread([fn = std::move(function)] { MTGS::RunOnGSThread(std::move(fn)); }); +} + void Host::RefreshGameListAsync(bool invalidate_cache) { QMetaObject::invokeMethod(g_main_window, "refreshGameList", Qt::QueuedConnection, Q_ARG(bool, invalidate_cache)); diff --git a/pcsx2/Host.h b/pcsx2/Host.h index 2ff3ec0dee..ae92710c17 100644 --- a/pcsx2/Host.h +++ b/pcsx2/Host.h @@ -84,6 +84,9 @@ namespace Host /// Safely executes a function on the VM thread. void RunOnCPUThread(std::function function, bool block = false); + /// Safely executes a function on the GS thread. + void RunOnGSThread(std::function function); + /// Asynchronously starts refreshing the game list. void RefreshGameListAsync(bool invalidate_cache); diff --git a/tests/ctest/core/StubHost.cpp b/tests/ctest/core/StubHost.cpp index 91dd4adea9..ad6324c5c9 100644 --- a/tests/ctest/core/StubHost.cpp +++ b/tests/ctest/core/StubHost.cpp @@ -156,6 +156,10 @@ void Host::RunOnCPUThread(std::function function, bool block /* = false { } +void Host::RunOnGSThread(std::function function) +{ +} + void Host::RefreshGameListAsync(bool invalidate_cache) { }