dolphin/Source/Core/Core/FifoPlayer
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
..
FifoAnalyzer.cpp HW: Remove unnecessary header inclusions 2016-01-13 02:47:32 -05:00
FifoAnalyzer.h FifoAnalyzer: Remove old code that was meant to handle EFB copies 2015-11-23 23:02:39 +13:00
FifoDataFile.cpp Fifoplayer: Load the Correct version number. 2015-11-08 01:24:08 +13:00
FifoDataFile.h Just a minor cleanup. Totally not the cause of random FifoCi failures. 2015-11-04 23:23:35 +13:00
FifoFileStruct.h FifoAnalyzer: Unify DecodeOp/DecodeCommand 2015-11-23 23:02:38 +13:00
FifoPlaybackAnalyzer.cpp FifoAnalyzer: Remove old code that was meant to handle EFB copies 2015-11-23 23:02:39 +13:00
FifoPlaybackAnalyzer.h FifoAnalyzer: Remove old code that was meant to handle EFB copies 2015-11-23 23:02:39 +13:00
FifoPlayer.cpp Core: Threadsafety Synchronization Fixes (Frame Advance / FifoPlayer) 2016-05-13 09:23:44 +10:00
FifoPlayer.h Core: Threadsafety Synchronization Fixes (Frame Advance / FifoPlayer) 2016-05-13 09:23:44 +10:00
FifoRecordAnalyzer.cpp FifoAnalyzer: Fix a few warnings that visual studio missed. 2015-12-28 20:20:30 +13:00
FifoRecordAnalyzer.h FifoAnalyzer: Remove layer of indirection. 2015-11-23 23:02:40 +13:00
FifoRecorder.cpp FifoRecorder: Fix bug with normal vertex arrays. 2015-11-23 23:02:42 +13:00
FifoRecorder.h FifoAnalyzer: Convert FifoRecordAnalyzer to namespace. 2015-11-23 23:02:37 +13:00