dolphin-emulator/Source/Core/Common
JosJuice 71ce8bb6f0 Don't call RunAsCPUThread in config callbacks
In theory, our config system supports calling Set from any thread. But
because we have config callbacks that call RunAsCPUThread, it's a lot
more restricted in practice. Calling Set from any thread other than the
host thread or the CPU thread is formally thread unsafe, and calling Set
on the host thread while the CPU thread is showing a panic alert causes
a deadlock. This is especially a problem because 04072f0 made the
"Ignore for this session" button in panic alerts call Set.

Because so many of our config callbacks want their code to run on the
CPU thread, I thought it would make sense to have a centralized way to
move execution to the CPU thread for config callbacks. To solve the
deadlock problem, this new way is non-blocking. This means that threads
other than the CPU thread might continue executing before the CPU thread
is informed of the new config, but I don't think there's any problem
with that.

Intends to fix https://bugs.dolphin-emu.org/issues/13108.
2023-08-17 19:19:25 +02:00
..
Config Don't call RunAsCPUThread in config callbacks 2023-08-17 19:19:25 +02:00
Crypto Resolve [-Wstringop-overflow=] 2023-04-10 14:21:15 -05:00
Debug Replace std::ostringstream usage with fmt::format 2023-06-18 18:37:32 -05:00
GL Common:AGL: Support making temporary contexts from the main thread 2023-06-10 14:25:45 -05:00
Logging Use __VA_OPT__(, ) __VA_ARGS__ instead of ##__VA_ARGS__ 2022-08-23 12:09:57 -07:00
Align.h Common: Better AlignUp implementation 2023-06-29 02:35:44 -05:00
Analytics.cpp Treewide: Adjust order of includes 2021-12-10 14:49:57 -08:00
Analytics.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
AndroidAnalytics.cpp Android: Mark s_android_send_report as static 2022-01-06 12:20:09 +01:00
AndroidAnalytics.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
Arm64Emitter.cpp Common/MathUtil: Move IntLog2 into MathUtil namespace 2023-04-15 03:35:05 -04:00
Arm64Emitter.h Arm64Emitter/x64Emitter: Use nodiscard for FixupBranch 2023-06-18 09:10:20 +02:00
ArmCommon.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
ArmCPUDetect.cpp Common: Replace StringBeginsWith/StringEndsWith with std equivalents 2023-01-24 14:58:20 -05:00
ArmFPURoundMode.cpp Common: Move FPU-related helpers into Common namespace 2023-03-21 10:58:13 -04:00
Assert.h [[unlikely]] ASSERT 2023-03-02 19:54:15 -06:00
BitField.h Make all custom fmt::formatter's format functions const 2022-01-13 11:11:08 -08:00
BitField.natvis Improve BitField natvis 2022-01-02 14:39:34 -08:00
BitSet.h Common/BitSet: Zero initialize data member 2023-01-25 04:16:30 -05:00
BitUtils.h Replace BitUtils with C++20: Counting Zeroes 2022-12-21 04:17:00 -06:00
BlockingLoop.h Common: Convert BlockingLoop::StopMode to enum class 2023-06-12 17:12:25 -07:00
build_info.txt.in Revert "windows: temporarily hardcode VCToolsVersion to 14.34.31931.0" 2023-05-16 20:24:45 -07:00
ChunkFile.h HostFileSystem: Set all NAND folders to be saved in save states when a movie is active 2022-11-10 14:02:29 -05:00
CMakeLists.txt Merge pull request #11955 from TellowKrinkle/CMakeDependencies 2023-06-30 19:06:04 +02:00
CodeBlock.h Common/CodeBlock: Call ResetCodePtr when decreasing region_size 2022-02-12 17:51:32 +01:00
ColorUtil.cpp treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
ColorUtil.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
Common.h Common/MsgHandler: Remove non-format variants of PanicAlert 2022-01-09 12:44:14 -08:00
CommonFuncs.cpp CommonFuncs: Add GetWin32ErrorString(). 2023-07-28 08:10:01 +02:00
CommonFuncs.h CommonFuncs: Add GetWin32ErrorString(). 2023-07-28 08:10:01 +02:00
CommonPaths.h VideoBackends:Vulkan: Allow loading custom drivers on Android 2023-06-11 13:52:34 +02:00
CommonTypes.h New FrameTime/VBlank Analyzer + Graph 2022-12-23 19:52:53 -05:00
CompatPatches.cpp Common/CommonFuncs: Move interface into Common namespace 2023-04-18 19:23:04 -04:00
CPUDetect.h CPUDetect: improve win/arm64 support 2022-07-25 21:21:11 -07:00
DynamicLibrary.cpp VideoBackends:Vulkan: Allow loading custom drivers on Android 2023-06-11 13:52:34 +02:00
DynamicLibrary.h VideoBackends:Vulkan: Allow loading custom drivers on Android 2023-06-11 13:52:34 +02:00
ENet.cpp Common: Rename ENetUtil.cpp/.h to ENet.cpp/.h 2023-04-11 11:48:46 -04:00
ENet.h Common/TraversalClient: Use correct deleter with g_MainNetHost 2023-04-19 12:38:16 -04:00
EnumFormatter.h Remove old GCC version workarounds 2023-06-06 22:49:53 -05:00
EnumMap.h Remove old GCC version workarounds 2023-06-06 22:49:53 -05:00
EnumMap.natvis Create EnumMap natvis 2022-01-02 15:36:47 -08:00
EnumUtils.h EnumUtils: Add Common::ToUnderlying 2023-06-17 07:15:33 -05:00
Event.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
FatFsUtil.cpp Config: Add setting for SD card file size when converting. 2023-04-18 11:04:26 +02:00
FatFsUtil.h Common/FatFsUtil: Add callback for cancelling SD card conversion. 2023-02-28 20:31:51 +01:00
FileSearch.cpp get rid of HAS_STD_FILESYSTEM 2023-01-10 05:17:43 -08:00
FileSearch.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
FileUtil.cpp VideoBackends:Vulkan: Allow loading custom drivers on Android 2023-06-11 13:52:34 +02:00
FileUtil.h VideoBackends:Vulkan: Allow loading custom drivers on Android 2023-06-11 13:52:34 +02:00
FixedSizeQueue.h Common: Move FixedSizeQueue into Common namespace 2023-03-22 01:23:15 -04:00
Flag.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
FloatUtils.cpp treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
FloatUtils.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
FormatUtil.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
FPURoundMode.h Common: Move FPU-related helpers into Common namespace 2023-03-21 10:58:13 -04:00
GekkoDisassembler.cpp GekkoDisassembler: Remove unused parameter dmode from fdabc function 2023-07-27 10:47:46 -07:00
GekkoDisassembler.h GekkoDisassembler: Remove unused parameter dmode from fdabc function 2023-07-27 10:47:46 -07:00
GenericCPUDetect.cpp treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
GenericFPURoundMode.cpp Common: Move FPU-related helpers into Common namespace 2023-03-21 10:58:13 -04:00
Hash.cpp Android: Fix armeabi-v7a build 2023-02-17 16:58:24 +01:00
Hash.h Common/Hash: use zlib-ng for adler32. small cleanups. 2022-08-01 10:07:27 -07:00
HookableEvent.h HookableEvent: Use std::recursive_mutex instead of std::mutex 2023-04-02 15:51:21 -07:00
HRWrap.cpp windows: replace comdef dependency with winrt 2023-01-23 06:09:01 -08:00
HRWrap.h windows: buildfix if pch not used 2022-04-12 12:28:57 -07:00
HttpRequest.cpp Merge pull request #11736 from noahpistilli/get-scheduler-stat 2023-05-01 01:19:11 +01:00
HttpRequest.h Merge pull request #11736 from noahpistilli/get-scheduler-stat 2023-05-01 01:19:11 +01:00
Image.cpp Common/Image: Add unit to log message 2022-09-26 15:04:15 -07:00
Image.h replace libpng with libspng 2022-07-25 18:32:16 -07:00
IniFile.cpp Common/IniFile: Move interface into Common namespace 2023-04-13 10:19:28 -04:00
IniFile.h Common/IniFile: Move interface into Common namespace 2023-04-13 10:19:28 -04:00
Inline.h Change _WIN32 check to a _MSC_VER check in Inline.h 2022-05-02 01:57:36 -05:00
Intrinsics.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
IOFile.cpp NetworkCaptureLogger: Allow PCAP shared read access on Windows 2022-09-29 23:08:25 +04:00
IOFile.h NetworkCaptureLogger: Allow PCAP shared read access on Windows 2022-09-29 23:08:25 +04:00
JitRegister.cpp Common/JitRegister: Move interface into Common namespace 2023-05-02 12:00:05 -04:00
JitRegister.h Common/JitRegister: Move interface into Common namespace 2023-05-02 12:00:05 -04:00
Lazy.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
LdrWatcher.cpp Treewide: Adjust order of includes 2021-12-10 14:49:57 -08:00
LdrWatcher.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
LinearDiskCache.h Common/LinearDiskCache: Move interface into Common namespace 2023-04-19 09:14:39 -04:00
make_scmrev.h.js make_scmrev.h.js: set default auto-update track from environment 2018-03-19 00:11:55 +01:00
MathUtil.h Common/MathUtil: Move IntLog2 into MathUtil namespace 2023-04-15 03:35:05 -04:00
Matrix.cpp Common/Matrix: Fix Quaternion Norm function. 2022-10-10 21:16:35 -05:00
Matrix.h Common/Matrix: Add equality operators to TVec2/3/4. 2022-09-24 01:38:01 +02:00
MemArena.h Common/MemArena: Pass shared memory base file name to GrabSHMSegment(). 2023-05-19 18:53:08 +02:00
MemArenaAndroid.cpp Common/MemArena: Pass shared memory base file name to GrabSHMSegment(). 2023-05-19 18:53:08 +02:00
MemArenaUnix.cpp Common/MemArena: Pass shared memory base file name to GrabSHMSegment(). 2023-05-19 18:53:08 +02:00
MemArenaWin.cpp Common/MemArena: Pass shared memory base file name to GrabSHMSegment(). 2023-05-19 18:53:08 +02:00
MemoryUtil.cpp Embrace nullptr over NULL and 0 2023-04-15 16:07:05 -05:00
MemoryUtil.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
MinizipUtil.h ResourcePack: dont scan for individual files 2022-08-06 15:38:46 -07:00
MsgHandler.cpp Common/MsgHandler: Use caller's file and line number in log messages 2022-01-09 12:44:14 -08:00
MsgHandler.h Common: Add [[nodiscard]] to GetStringT(). 2022-09-23 14:58:18 +02:00
NandPaths.cpp NandPaths: Use initializer_list instead of unordered_set 2023-08-12 14:00:41 -07:00
NandPaths.h Common: Convert FromWhichRoot to enum class 2023-06-13 13:25:22 -07:00
Network.cpp Common/Network: Use StrErrorWrapper 2023-07-12 20:52:35 +04:00
Network.h BBA/BuiltIn: Add SSDP multicast support 2022-08-24 21:29:57 +04:00
PcapFile.cpp Treewide: Adjust order of includes 2021-12-10 14:49:57 -08:00
PcapFile.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
PerformanceCounter.cpp Treewide: Adjust order of includes 2021-12-10 14:49:57 -08:00
PerformanceCounter.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
Profiler.cpp Common::Timer: use chrono::steady_clock internally 2022-08-02 22:24:06 -07:00
Profiler.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
QoSSession.cpp Treewide: Adjust order of includes 2021-12-10 14:49:57 -08:00
QoSSession.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
Random.cpp use std-provided randomness for JitArm64 unittests 2023-02-22 12:55:12 -08:00
Random.h use std-provided randomness for JitArm64 unittests 2023-02-22 12:55:12 -08:00
Result.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
scmrev.h.in Make it possible to enable auto-updates by default with CMake builds 2021-04-17 19:45:43 +02:00
SCMRevGen.vcxproj msbuild: simplify lang/scm projects a bit 2022-04-27 15:06:04 -07:00
ScopeGuard.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
SDCardUtil.cpp msvc: remove warning disables which no longer fire 2021-07-17 18:24:36 -07:00
SDCardUtil.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
Semaphore.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
SettingsHandler.cpp Resolve [-Wunused-but-set-variable] 2023-04-12 03:59:57 -05:00
SettingsHandler.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
SFMLHelper.cpp treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
SFMLHelper.h SFMLHelper: Add stream insertion overload helpers for enum types 2021-09-22 15:42:01 -04:00
SocketContext.cpp treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
SocketContext.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
SPSCQueue.h Fix all uninitialized variable warnings (C26495) 2021-10-13 12:32:16 -07:00
StringLiteral.h Apply suggestions from code review 2023-02-09 18:36:20 +13:00
StringUtil.cpp Kill AsciiToHex 2023-06-22 00:06:50 -05:00
StringUtil.h Merge pull request #11903 from noahpistilli/wiilink 2023-06-26 02:27:47 +02:00
Swap.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
SymbolDB.cpp Treewide: Adjust order of includes 2021-12-10 14:49:57 -08:00
SymbolDB.h Rename Symbol constructor parameter to prevent shadowing 2023-06-20 13:38:31 -04:00
Thread.cpp Fix building on OpenBSD 2023-04-29 19:21:48 -04:00
Thread.h Jit: Don't use a second stack 2023-02-28 20:29:46 +01:00
Timer.cpp add TODO for chrono in GetLocalTimeSinceJan1970 2022-08-06 22:25:30 -07:00
Timer.h Timer: protect usages of ms timers from rollover 2022-08-02 22:24:06 -07:00
TraversalClient.cpp Common/TraversalClient: Move interface into Common namespace 2023-04-24 08:28:25 -04:00
TraversalClient.h Common/TraversalClient: Move interface into Common namespace 2023-04-24 08:28:25 -04:00
TraversalProto.h Common/TraversalProto: Move interface into Common namespace 2023-04-24 08:53:14 -04:00
TraversalServer.cpp Fixed a bug where in the extremely unlikely change that HostIDs collide, a new HostID is generated. 2023-07-13 21:33:36 +10:00
TypeUtils.h Common: Relicense TypeUtils to CC0 2023-04-05 19:01:11 -07:00
UPnP.cpp Common/UPnP: Move interface into Common namespace 2023-04-12 14:15:58 -04:00
UPnP.h Common/UPnP: Move interface into Common namespace 2023-04-12 14:15:58 -04:00
VariantUtil.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
Version.cpp Fix static initialisation order fiasco issue for Version variables 2022-01-14 00:04:22 +01:00
Version.h Fix static initialisation order fiasco issue for Version variables 2022-01-14 00:04:22 +01:00
WindowsRegistry.cpp windows: prefer os version from registry 2023-01-17 01:38:00 -08:00
WindowsRegistry.h CMake/MSVC: Fix PCH disabled build 2023-01-31 23:21:07 +13:00
WindowSystemInfo.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
WorkQueueThread.h WorkQueueThread: Fix WaitForCompletion 2023-03-20 16:31:40 +01:00
x64ABI.cpp Common:X64ABI: Work around clang-format being dumb 2022-08-11 23:57:28 -05:00
x64ABI.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
x64CPUDetect.cpp CMake/MSVC: Fix PCH disabled build 2023-01-31 23:21:07 +13:00
x64Emitter.cpp xEmitter: Convert PrefetchLevel to enum class 2023-06-17 16:41:32 -07:00
x64Emitter.h Merge pull request #11966 from Dentomologist/convert_xemitter_prefetchlevel_to_enum_class 2023-06-18 15:17:02 +02:00
x64FPURoundMode.cpp Common: Move FPU-related helpers into Common namespace 2023-03-21 10:58:13 -04:00
x64Reg.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00