dolphin/Source/Core/Core
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
..
Boot Always clear memory when booting 2016-04-01 21:35:26 +02:00
Debugger Core: Threadsafety Synchronization Fixes (Frame Advance / FifoPlayer) 2016-05-13 09:23:44 +10:00
DSP DSP: Fix integer promotion spill 2016-04-08 12:08:17 +10:00
FifoPlayer Core: Threadsafety Synchronization Fixes (Frame Advance / FifoPlayer) 2016-05-13 09:23:44 +10:00
HLE Core: Threadsafety Synchronization Fixes (Frame Advance / FifoPlayer) 2016-05-13 09:23:44 +10:00
HW Core: Threadsafety Synchronization Fixes (Frame Advance / FifoPlayer) 2016-05-13 09:23:44 +10:00
IPC_HLE Close all files so /tmp can be deleted on save state load. 2016-04-25 18:29:49 +12:00
PowerPC Core: Threadsafety Synchronization Fixes (Frame Advance / FifoPlayer) 2016-05-13 09:23:44 +10:00
ActionReplay.cpp Merge pull request #3067 from JosJuice/cheat-manager-regression 2015-12-02 14:08:32 +01:00
ActionReplay.h Fix Cheat Manager not saving created codes 2015-09-19 17:20:16 +02:00
ARDecrypt.cpp Core: Pass several parameters by const reference 2015-06-04 14:19:25 -04:00
ARDecrypt.h Set copyright year to when a file was created 2015-05-25 13:22:31 +02:00
BootManager.cpp Merge pull request #3576 from lioncash/boot 2016-01-30 13:14:52 +01:00
BootManager.h Set copyright year to when a file was created 2015-05-25 13:22:31 +02:00
CMakeLists.txt [Android] Implement support for real Wiimotes with the DolphinBar 2016-02-07 05:31:48 -06:00
ConfigManager.cpp GameInis: Allow one ini to cover all VC games for a console 2016-02-05 17:35:13 +13:00
ConfigManager.h Merge pull request #3455 from Sonicadvance1/GC_adapter_android 2016-01-06 15:07:09 -05:00
Core.cpp Core: Threadsafety Synchronization Fixes (Frame Advance / FifoPlayer) 2016-05-13 09:23:44 +10:00
Core.h Core: Threadsafety Synchronization Fixes (Frame Advance / FifoPlayer) 2016-05-13 09:23:44 +10:00
Core.vcxproj Make the Wii U Gamecube adapter work with less magic. 2016-01-05 13:44:37 -06:00
Core.vcxproj.filters Make the Wii U Gamecube adapter work with less magic. 2016-01-05 13:44:37 -06:00
CoreTiming.cpp Make exceptions consistant across all JITs/Interpeters. 2016-04-28 17:22:52 +12:00
CoreTiming.h Alternative fix: promote cycleslate to an s64 everywhere. 2016-04-10 02:13:06 +12:00
DSPEmulator.cpp DSPEmulator: Make CreateDSPEmulator return a unique_ptr 2016-01-17 22:33:21 -05:00
DSPEmulator.h DSPEmulator: Make CreateDSPEmulator return a unique_ptr 2016-01-17 22:33:21 -05:00
ec_wii.cpp Merge pull request #3091 from Tilka/mbedtls 2015-10-03 18:00:58 -07:00
ec_wii.h Update license headers to GPLv2+ 2015-05-25 13:22:31 +02:00
GeckoCode.cpp Options: merge SCoreStartupParameter into SConfig 2015-06-12 19:07:45 +02:00
GeckoCode.h GeckoCode: Remove GetAddress function prototype 2015-07-28 22:10:39 -04:00
GeckoCodeConfig.cpp Set copyright year to when a file was created 2015-05-25 13:22:31 +02:00
GeckoCodeConfig.h Set copyright year to when a file was created 2015-05-25 13:22:31 +02:00
Host.h Set copyright year to when a file was created 2015-05-25 13:22:31 +02:00
HotkeyManager.cpp Relabel hotkey option for toggle frame limit to better reflect function 2016-02-15 04:11:21 -06:00
HotkeyManager.h Throttler: Rename "framelimiter" to "emulation speed". 2016-01-05 23:39:05 +01:00
MachineContext.h Remove ARMv7 support. 2015-06-07 22:44:13 -05:00
MemoryWatcher.cpp Use CoreTiming for MemoryWatcher. 2016-04-28 21:28:15 -07:00
MemoryWatcher.h Use CoreTiming for MemoryWatcher. 2016-04-28 21:28:15 -07:00
MemTools.cpp Implement BLR Overflow handling for Windows. 2016-03-20 00:41:28 +13:00
MemTools.h MemTools: Get rid of a global variable 2016-01-11 03:24:03 -05:00
Movie.cpp Core: Threadsafety Synchronization Fixes (Frame Advance / FifoPlayer) 2016-05-13 09:23:44 +10:00
Movie.h Merge pull request #3769 from RisingFog/remove_framestep 2016-04-29 19:41:25 -04:00
NetPlayClient.cpp SCM: Use std::string. 2016-05-05 00:22:49 +02:00
NetPlayClient.h NetPlayClient: Use std::array instead of C arrays for buffers 2016-01-25 04:57:21 -05:00
NetPlayProto.h Use the current commit hash in the netplay version 2016-01-07 00:17:05 +01:00
NetPlayServer.cpp SCM: Use std::string. 2016-05-05 00:22:49 +02:00
NetPlayServer.h NetPlayServer: Make SendAsyncToClients use an unique_ptr 2016-01-27 01:34:03 +01:00
PatchEngine.cpp Options: merge SCoreStartupParameter into SConfig 2015-06-12 19:07:45 +02:00
PatchEngine.h Set copyright year to when a file was created 2015-05-25 13:22:31 +02:00
State.cpp ChunkFile: Handle bool in a stable way across platforms 2016-04-14 22:55:03 -04:00
State.h State/Movie: Use char instead of u8 for game ID 2015-11-28 09:36:48 +01:00