{"push_id":1123417661,"size":4,"distinct_size":4,"ref":"refs/heads/master","head":"08d45b9fea67714610cc6fdbe41e7bf1262816df","before":"ff4bc5f33d6bfaab38d651b0706c77d705cf6c5c","commits":[{"sha":"c1922783f8125dee4f12fdb20bdcbcf764e7ade4","author":{"email":"77c95fd35361bbaf78f9cd58a0478ac0fda09940@users.noreply.github.com","name":"EmptyChaos"},"message":"Core: Threadsafety Synchronization Fixes (Frame Advance / FifoPlayer)\n\nFix Frame Advance and FifoPlayer pause/unpause/stop.\n\nCPU::EnableStepping is not atomic but is called from multiple threads\nwhich races and leaves the system in a random state; also instruction\nstepping was unstable, m_StepEvent had an almost random value because\nof the dual purpose it served which could cause races where CPU::Run\nwould SingleStep when it was supposed to be sleeping.\n\nFifoPlayer never FinishStateMove()d which was causing it to deadlock.\nRather than partially reimplementing CPU::Run, just use CPUCoreBase\nand then call CPU::Run(). More DRY and less likely to have weird bugs\nspecific to the player (i.e the previous freezing on pause/stop).\n\nRefactor PowerPC::state into CPU since it manages the state of the\nCPU Thread which is controlled by CPU, not PowerPC. This simplifies\nthe architecture somewhat and eliminates races that can be caused by\ncalling PowerPC state functions directly instead of using CPU's\n(because they bypassed the EnableStepping lock).","distinct":true,"url":"https://api.github.com/repos/dolphin-emu/dolphin/commits/c1922783f8125dee4f12fdb20bdcbcf764e7ade4"},{"sha":"e8dfc8e654f7a8a92b126bdcff9e4b86b7463ba9","author":{"email":"77c95fd35361bbaf78f9cd58a0478ac0fda09940@users.noreply.github.com","name":"EmptyChaos"},"message":"Movie: Threadsafety Audit\n\nFix TASInputDlg which was trying to access the GUI without the GUI\nlock from the CPU Thread.","distinct":true,"url":"https://api.github.com/repos/dolphin-emu/dolphin/commits/e8dfc8e654f7a8a92b126bdcff9e4b86b7463ba9"},{"sha":"c1944f623b5918ab45152795dea9e49f57878138","author":{"email":"77c95fd35361bbaf78f9cd58a0478ac0fda09940@users.noreply.github.com","name":"EmptyChaos"},"message":"Core/Movie: Add ability to run code in Host context\n\nEndPlayInput runs on the CPU thread so it can't directly call\nUpdateWantDeterminism. PlayController also tries to ChangeDisc\nfrom the CPU Thread which is also invalid. It now just pauses\nexecution and posts a request to the Host to fix it instead.\n\nThe Core itself also did dodgy things like PauseAndLock-ing\nfrom the CPU Thread and SetState from EmuThread which have been\nremoved.","distinct":true,"url":"https://api.github.com/repos/dolphin-emu/dolphin/commits/c1944f623b5918ab45152795dea9e49f57878138"},{"sha":"08d45b9fea67714610cc6fdbe41e7bf1262816df","author":{"email":"f9791342c5930d053862397861a8fffa7bc4f6aa@gmail.com","name":"Mat M"},"message":"Merge pull request #3794 from EmptyChaos/frame-advance-race\n\nCore: Add synchronization to state changes (Fix Frame Step and FIFO Player -  Issue 8718)","distinct":true,"url":"https://api.github.com/repos/dolphin-emu/dolphin/commits/08d45b9fea67714610cc6fdbe41e7bf1262816df"}]}
{"actor":{"display_login":"lioncash"}}