dolphin/Source/Core/Common
EmptyChaos c1922783f8 Core: Threadsafety Synchronization Fixes (Frame Advance / FifoPlayer)
Fix Frame Advance and FifoPlayer pause/unpause/stop.

CPU::EnableStepping is not atomic but is called from multiple threads
which races and leaves the system in a random state; also instruction
stepping was unstable, m_StepEvent had an almost random value because
of the dual purpose it served which could cause races where CPU::Run
would SingleStep when it was supposed to be sleeping.

FifoPlayer never FinishStateMove()d which was causing it to deadlock.
Rather than partially reimplementing CPU::Run, just use CPUCoreBase
and then call CPU::Run(). More DRY and less likely to have weird bugs
specific to the player (i.e the previous freezing on pause/stop).

Refactor PowerPC::state into CPU since it manages the state of the
CPU Thread which is controlled by CPU, not PowerPC. This simplifies
the architecture somewhat and eliminates races that can be caused by
calling PowerPC state functions directly instead of using CPU's
(because they bypassed the EnableStepping lock).
2016-05-13 09:23:44 +10:00
..
Crypto More asterisks 2016-01-21 21:16:51 +01:00
GL EGL: Also check for higher GL versions. 2016-03-01 07:55:57 +01:00
Logging A few more asterisks, mostly casts 2016-01-21 22:20:22 +01:00
Arm64Emitter.cpp JitArm64: Implement mulhwx 2016-03-04 22:51:46 +01:00
Arm64Emitter.h JitArm64: Implement mulhwx 2016-03-04 22:51:46 +01:00
ArmCommon.h
ArmCPUDetect.cpp Including missing headers required for non-pch builds and other architectures 2015-12-22 18:20:48 -06:00
Assert.h Mark more strings for translation 2015-11-20 11:33:47 +01:00
Atomic_GCC.h
Atomic_Win32.h
Atomic.h
BitField.h
BitField.natvis Correct capitalization of 'Visual Studio' 2015-11-02 17:12:09 +13:00
BitSet.h Add missing include, this was previously masked by PCH usage 2016-02-15 09:48:22 -08:00
BlockingLoop.h
BreakPoints.cpp More asterisks 2016-01-21 21:16:51 +01:00
BreakPoints.h More asterisks 2016-01-21 21:16:51 +01:00
CDUtils.cpp Common: asterisks go against the type name 2016-01-21 20:46:25 +01:00
CDUtils.h
ChunkFile.h ChunkFile: Handle bool in a stable way across platforms 2016-04-14 22:55:03 -04:00
CMakeLists.txt CMakeLists cleanup and enable Android headless building. 2016-02-05 11:24:11 -06:00
CodeBlock.h More asterisks 2016-01-21 21:16:51 +01:00
ColorUtil.cpp More asterisks 2016-01-21 21:16:51 +01:00
ColorUtil.h
Common.h SCM: Use std::string. 2016-05-05 00:22:49 +02:00
Common.vcxproj Add support for GL 4.3 2016-02-14 20:35:38 -06:00
Common.vcxproj.filters Add support for GL 4.3 2016-02-14 20:35:38 -06:00
CommonFuncs.h Merge pull request #1474 from phire/DSPHLE_cleanups 2015-11-24 13:33:59 +13:00
CommonPaths.h Add support for sending game memory changes to outside processes 2015-12-29 17:59:16 -08:00
CommonTypes.h
CPUDetect.h
DebugInterface.h Common: asterisks go against the type name 2016-01-21 20:46:25 +01:00
ENetUtil.cpp
ENetUtil.h
Event.h Core: Threadsafety Synchronization Fixes (Frame Advance / FifoPlayer) 2016-05-13 09:23:44 +10:00
FifoQueue.h More asterisks 2016-01-21 21:16:51 +01:00
FileSearch.cpp
FileSearch.h
FileUtil.cpp make DeleteDirRecursively clean up correctly after failure. 2016-04-25 18:28:38 +12:00
FileUtil.h Correct ampersands as well 2016-01-21 21:27:56 +01:00
FixedSizeQueue.h Correct ampersands as well 2016-01-21 21:27:56 +01:00
Flag.h
FPURoundMode.h
GekkoDisassembler.cpp Fix some very minor spelling mistakes 2016-02-19 01:48:10 +00:00
GekkoDisassembler.h
GenericCPUDetect.cpp
GenericFPURoundMode.cpp
Hash.cpp A few more asterisks, mostly casts 2016-01-21 22:20:22 +01:00
Hash.h More asterisks 2016-01-21 21:16:51 +01:00
IniFile.cpp
IniFile.h IniFile: Initialize with default value if key does not exist. 2016-01-13 22:51:53 +01:00
Intrinsics.h
JitRegister.cpp
JitRegister.h
LinearDiskCache.h SCM: Use std::string. 2016-05-05 00:22:49 +02:00
make_scmrev.h.js
MathUtil.cpp Correct ampersands as well 2016-01-21 21:27:56 +01:00
MathUtil.h MathUtilTest: Fix tests on MSVC - Document compiler bug 2016-04-03 19:16:47 -04:00
MemArena.cpp More asterisks 2016-01-21 21:16:51 +01:00
MemArena.h More asterisks 2016-01-21 21:16:51 +01:00
MemoryUtil.cpp Common: asterisks go against the type name 2016-01-21 20:46:25 +01:00
MemoryUtil.h
Misc.cpp
MsgHandler.cpp Mark more strings for translation 2015-11-20 11:33:47 +01:00
MsgHandler.h Mark more strings for translation 2015-11-20 11:33:47 +01:00
NandPaths.cpp Correct ampersands as well 2016-01-21 21:27:56 +01:00
NandPaths.h
Network.cpp Common: Use C++ random generator for generating MAC addresses 2016-01-31 23:52:47 +10:00
Network.h
NonCopyable.h NonCopyable: Remove private access specifier 2016-03-12 16:59:45 -05:00
PcapFile.cpp
PcapFile.h
PerformanceCounter.cpp
PerformanceCounter.h
Profiler.cpp
Profiler.h Profiler: Sort output by total time 2015-08-20 11:50:43 +02:00
SCMRevGen.vcxproj Run system native CScript 2016-01-14 00:37:11 +01:00
ScopeGuard.h
SDCardUtil.cpp
SDCardUtil.h
SettingsHandler.cpp More asterisks 2016-01-21 21:16:51 +01:00
SettingsHandler.h More asterisks 2016-01-21 21:16:51 +01:00
StringUtil.cpp Correct ampersands as well 2016-01-21 21:27:56 +01:00
StringUtil.h Correct ampersands as well 2016-01-21 21:27:56 +01:00
SymbolDB.cpp Correct ampersands as well 2016-01-21 21:27:56 +01:00
SymbolDB.h Correct ampersands as well 2016-01-21 21:27:56 +01:00
SysConf.cpp Move SetData logic to within SysConf.cpp 2016-02-28 19:42:15 -05:00
SysConf.h More asterisks 2016-01-21 21:16:51 +01:00
Thread.cpp Thread: Limit thread name to 15 bytes on linux. 2016-01-27 07:23:17 +01:00
Thread.h Common: asterisks go against the type name 2016-01-21 20:46:25 +01:00
Timer.cpp
Timer.h
TraversalClient.cpp Merge pull request #2876 from CastellaFactory/master 2015-12-02 14:20:47 +01:00
TraversalClient.h
TraversalProto.h Added Gui elements in Netplay Setup Diag so a person can choose a traversal server 2015-02-25 18:28:26 -08:00
TraversalServer.cpp A few more asterisks, mostly casts 2016-01-21 22:20:22 +01:00
ucrtFreadWorkaround.cpp A few more asterisks, mostly casts 2016-01-21 22:20:22 +01:00
Version.cpp SCM: Use std::string. 2016-05-05 00:22:49 +02:00
x64ABI.cpp Correct ampersands as well 2016-01-21 21:27:56 +01:00
x64ABI.h
x64Analyzer.cpp Correct ampersands as well 2016-01-21 21:27:56 +01:00
x64Analyzer.h Correct ampersands as well 2016-01-21 21:27:56 +01:00
x64CPUDetect.cpp
x64Emitter.cpp
x64Emitter.h
x64FPURoundMode.cpp x64FPURoundMode: fix comments 2015-06-23 02:17:36 +02:00