void HdRenderThread::StopRender() { if (IsRendering()) { _enableRender.clear(); std::unique_lock<std::mutex> lock(_requestedStateMutex); _requestedState = StateIdle; _rendering.store(false); } }
void CSubPicAllocatorPresenterImpl::AlphaBltSubPic(const CRect& windowRect, const CRect& videoRect, SubPicDesc* pTarget) { CComPtr<ISubPic> pSubPic; if (m_pSubPicQueue->LookupSubPic(m_rtNow, !IsRendering(), pSubPic)) { CRect rcSource, rcDest; if (SUCCEEDED(pSubPic->GetSourceAndDest(windowRect, videoRect, rcSource, rcDest))) { pSubPic->AlphaBlt(rcSource, rcDest, pTarget); } } }
void HdRenderThread::StartRender() { if (!IsRendering()) { std::unique_lock<std::mutex> lock(_requestedStateMutex); _enableRender.test_and_set(); _requestedState = StateRendering; _rendering.store(true); _requestedStateCV.notify_one(); } }