void Start() { s_finish_read = CoreTiming::RegisterEvent("FinishReadDVDThread", FinishRead); s_request_queue_expanded.Reset(); s_result_queue_expanded.Reset(); s_request_queue.Clear(); s_result_queue.Clear(); // This is reset on every launch for determinism, but it doesn't matter // much, because this will never get exposed to the emulated game. s_next_id = 0; StartDVDThread(); }
u32 VideoBackendHardware::Video_AccessEFB(EFBAccessType type, u32 x, u32 y, u32 InputData) { if (s_BackendInitialized && g_ActiveConfig.bEFBAccessEnable) { s_accessEFBArgs.type = type; s_accessEFBArgs.x = x; s_accessEFBArgs.y = y; s_accessEFBArgs.Data = InputData; s_efbAccessRequested.Set(); if (SConfig::GetInstance().m_LocalCoreStartupParameter.bCPUThread) { s_efbAccessReadyEvent.Reset(); if (s_FifoShuttingDown.IsSet()) return 0; s_efbAccessRequested.Set(); s_efbAccessReadyEvent.Wait(); } else VideoFifo_CheckEFBAccess(); return s_AccessEFBResult; } return 0; }
u32 VideoBackendHardware::Video_GetQueryResult(PerfQueryType type) { if (!g_perf_query->ShouldEmulate()) { return 0; } // TODO: Is this check sane? if (!g_perf_query->IsFlushed()) { if (SConfig::GetInstance().m_LocalCoreStartupParameter.bCPUThread) { s_perfQueryReadyEvent.Reset(); if (s_FifoShuttingDown.IsSet()) return 0; s_perfQueryRequested.Set(); s_perfQueryReadyEvent.Wait(); } else g_perf_query->FlushResults(); } return g_perf_query->GetQueryResult(type); }