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
ArmCPUDetect.cpp Including missing headers required for non-pch builds and other architectures 2015-12-22 18:20:48 -06:00
ArmCommon.h Set copyright year to when a file was created 2015-05-25 13:22:31 +02:00
Assert.h Mark more strings for translation 2015-11-20 11:33:47 +01:00
Atomic.h Set copyright year to when a file was created 2015-05-25 13:22:31 +02:00
Atomic_GCC.h Fix building with PCH disabled. 2015-09-28 11:51:08 -05:00
Atomic_Win32.h Set copyright year to when a file was created 2015-05-25 13:22:31 +02:00
BitField.h Merge pull request #2738 from lioncash/bitfield 2015-10-03 18:21:24 -07:00
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 Fifo: Rewrite SyncGpu 2015-06-08 23:16:24 +02:00
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 Add missing license headers 2015-05-25 13:11:47 +02:00
CMakeLists.txt CMakeLists cleanup and enable Android headless building. 2016-02-05 11:24:11 -06:00
CPUDetect.h CPUDetect: Remove a memset call on the this pointer 2015-07-28 23:44:18 -04:00
ChunkFile.h ChunkFile: Handle bool in a stable way across platforms 2016-04-14 22:55:03 -04: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 Set copyright year to when a file was created 2015-05-25 13:22:31 +02:00
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 Common: drop GEKKO define 2015-06-24 12:13:41 +02:00
DebugInterface.h Common: asterisks go against the type name 2016-01-21 20:46:25 +01:00
ENetUtil.cpp Update license headers to GPLv2+ 2015-05-25 13:22:31 +02:00
ENetUtil.h Update license headers to GPLv2+ 2015-05-25 13:22:31 +02:00
Event.h Core: Threadsafety Synchronization Fixes (Frame Advance / FifoPlayer) 2016-05-13 09:23:44 +10:00
FPURoundMode.h Set copyright year to when a file was created 2015-05-25 13:22:31 +02:00
FifoQueue.h More asterisks 2016-01-21 21:16:51 +01:00
FileSearch.cpp FileSearch: Don't use RegExs, just do string comparisons. 2015-09-27 13:25:51 -04:00
FileSearch.h FileSearch: Don't use RegExs, just do string comparisons. 2015-09-27 13:25:51 -04:00
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 [windows] remove various workarounds which were required for vs2013 2015-09-03 04:39:05 -07:00
GekkoDisassembler.cpp Fix some very minor spelling mistakes 2016-02-19 01:48:10 +00:00
GekkoDisassembler.h Add missing license headers 2015-05-25 13:11:47 +02:00
GenericCPUDetect.cpp Set copyright year to when a file was created 2015-05-25 13:22:31 +02:00
GenericFPURoundMode.cpp Update license headers to GPLv2+ 2015-05-25 13:22:31 +02:00
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: Mark getter functions as const 2015-08-19 22:27:18 -04:00
IniFile.h IniFile: Initialize with default value if key does not exist. 2016-01-13 22:51:53 +01:00
Intrinsics.h Update license headers to GPLv2+ 2015-05-25 13:22:31 +02:00
JitRegister.cpp Linux: detect perf and default map dir to /tmp 2015-10-10 16:42:53 +02:00
JitRegister.h Fix building with PCH disabled. 2015-05-25 22:26:43 -05:00
LinearDiskCache.h SCM: Use std::string. 2016-05-05 00:22:49 +02:00
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 Revert "x64: build a Position-Independent Executable (PIE)" 2015-06-14 16:06:26 +12:00
Misc.cpp Set copyright year to when a file was created 2015-05-25 13:22:31 +02:00
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 Mark which Wii root to use in the NAND path code. 2015-10-16 09:10:39 +02:00
Network.cpp Common: Use C++ random generator for generating MAC addresses 2016-01-31 23:52:47 +10:00
Network.h Set copyright year to when a file was created 2015-05-25 13:22:31 +02:00
NonCopyable.h NonCopyable: Remove private access specifier 2016-03-12 16:59:45 -05:00
PcapFile.cpp Update license headers to GPLv2+ 2015-05-25 13:22:31 +02:00
PcapFile.h Common: Move NonCopyable to its own header 2015-09-26 18:50:35 -04:00
PerformanceCounter.cpp Set copyright year to when a file was created 2015-05-25 13:22:31 +02:00
PerformanceCounter.h Update license headers to GPLv2+ 2015-05-25 13:22:31 +02:00
Profiler.cpp Profiler: Sort output by total time 2015-08-20 11:50:43 +02:00
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
SDCardUtil.cpp Common: Remove other Common prefixed headers from Common.h 2015-09-26 18:51:58 -04:00
SDCardUtil.h Set copyright year to when a file was created 2015-05-25 13:22:31 +02:00
ScopeGuard.h SaveState: Fix for race condition ("wait" didn't actually waited for file to flush/close). 2015-09-27 21:40:32 +03:00
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 SaveState/DolphinWX: Display time and date of savestate when a slot is selected, or Empty if no savestate exists in the slot. 2015-10-10 22:14:22 +02:00
Timer.h SaveState/DolphinWX: Display time and date of savestate when a slot is selected, or Empty if no savestate exists in the slot. 2015-10-10 22:14:22 +02:00
TraversalClient.cpp Merge pull request #2876 from CastellaFactory/master 2015-12-02 14:20:47 +01:00
TraversalClient.h [Netplay:Traversal] Add "Force Netplay Listen Port" feature that was in old netplay branch 2015-09-20 20:15:13 +09:00
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
Version.cpp SCM: Use std::string. 2016-05-05 00:22:49 +02:00
make_scmrev.h.js [windows] When making scmrev.h, also look for msysgit explicitly. VS2015 packages it. 2015-09-03 04:39:04 -07:00
ucrtFreadWorkaround.cpp A few more asterisks, mostly casts 2016-01-21 22:20:22 +01:00
x64ABI.cpp Correct ampersands as well 2016-01-21 21:27:56 +01:00
x64ABI.h Set copyright year to when a file was created 2015-05-25 13:22:31 +02:00
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 Common: Get rid of a few pointer casts 2015-09-15 12:28:59 -04:00
x64Emitter.cpp x64Emitter: Remove pointer cast 2015-09-17 09:35:13 -04:00
x64Emitter.h Common: Move asserts to their own header 2015-09-26 18:51:27 -04:00
x64FPURoundMode.cpp x64FPURoundMode: fix comments 2015-06-23 02:17:36 +02:00