From d3e431af9e8e1f73dbcd4b0fd377749efc254f55 Mon Sep 17 00:00:00 2001 From: skidau Date: Thu, 7 Mar 2013 22:16:00 +1100 Subject: [PATCH] Set g_bSignalTokenInterrupt on the main thread. Fixes the random hang in Harry Potter: Prisoner of Azkaban. --- Source/Core/VideoCommon/Src/PixelEngine.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Source/Core/VideoCommon/Src/PixelEngine.cpp b/Source/Core/VideoCommon/Src/PixelEngine.cpp index aec160ddd2..ce4881252f 100644 --- a/Source/Core/VideoCommon/Src/PixelEngine.cpp +++ b/Source/Core/VideoCommon/Src/PixelEngine.cpp @@ -383,7 +383,10 @@ void SetToken_OnMainThread(u64 userdata, int cyclesLate) Common::AtomicStore(*(volatile u32*)&CommandProcessor::fifo.PEToken, userdata & 0xffff); INFO_LOG(PIXELENGINE, "VIDEO Backend raises INT_CAUSE_PE_TOKEN (btw, token: %04x)", CommandProcessor::fifo.PEToken); if (userdata >> 16) + { + Common::AtomicStore(*(volatile u32*)&g_bSignalTokenInterrupt, 1); UpdateInterrupts(); + } CommandProcessor::interruptTokenWaiting = false; IncrementCheckContextId(); }